2003网站服务器建设中,云主机有什么用,徐州市建设工程交易中心,西安旅游攻略目录 核心思想#xff1a;
过程#xff1a;
演示#xff1a;
第一趟#xff1a;
第二趟#xff1a; 代码#xff1a; 核心思想#xff1a;
从待排序列中取一个元素作为中心#xff0c;所有比它小或相等的元素一律放在前面#xff0c;
所有比它大的元素放在后面
过程
演示
第一趟
第二趟 代码 核心思想
从待排序列中取一个元素作为中心所有比它小或相等的元素一律放在前面
所有比它大的元素放在后面形成左右两个表然后在对各个子表重新选择
中心元素并按此规则调整直到每一个子表的元素只剩最后一个此时
便成为有序序列了。
过程
设置两个指针 i 和 j 分别从左往右找比基准元素大的和从右往左找比基准元素小
的元素
演示
待排序序列 2 8 7 1 3 5 6 4
选则关键字 4 以4为基准
第一趟 2和4进行比较2小于4 不交换位置指针 i 向右移动一位 8和4比较8大于4交换位置 此时基准元素4左边元素都比4小移动 j 指针向左移动一位 6与4比较6大于4不交换位置指针 j 向左移动一位 5与4比较5大于4位置不交换指针 j 向左移动一位 3与4比较3小于4交换位置 此时基准元素4的右边元素都比4大移动 i 指针向右移动一位 7和4比较7大于4交换位置 此时基准元素4左边元素小于4移动 j 指针向左移动一位 1与4比较1小于4交换位置 此时基准元素4的左边元素都比4小右边元素都比4大至此第一趟排序结束
第二趟 此时划分两个部分第一部分2 3 1 第二部分 7 5 6 8
分别按照上述方法进行排列
最后结果 1 2 3 4 5 6 7 8 9 代码
#include stdio.h// 定义数组长度
#define N 10// 快速排序函数
void quick_sort(int arr[], int left, int right)
{if (left right) {int i left, j right, pivot arr[left];while (i j) {while (i j arr[j] pivot) {j--;}if (i j) {arr[i] arr[j];}while (i j arr[i] pivot) {i;}if (i j) {arr[j--] arr[i];}}arr[i] pivot;quick_sort(arr, left, i - 1);quick_sort(arr, i 1, right);}
}// 主函数
int main()
{int arr[N] {5, 9, 3, 6, 1, 8, 2, 7, 4, 0};quick_sort(arr, 0, N - 1);for (int i 0; i N; i) {printf(%d , arr[i]);}return 0;
}