|
发表于 2021-12-11 02:01:49
|
显示全部楼层
- #include<stdio.h>
- void quick_sort(int s[], int l, int r)
- {
- if (l < r)
- {
- //x作为工具值,最左边的第一个值有坑位
- int i = l, j = r, x = s[l];
- // 根据工具值,区分左右半区,左边小,右边大
- while (i < j)
- {
- //工具值取左, 就从右边开始运算
- while (x <= s[j] && i < j)
- {
- j--;
- }
- //右边比工具值小才会跳出循环,把这个小的值给左边的坑位
- s[i] = s[j];
- while (x >= s[i] && i < j)
- {
- i++;
- }
- //左边比工具值大才会跳出循环,把这个大的值给刚刚被挖的右边的坑位
- s[j] = s[i];
- }
- //中间的坑位,让工具值x填进去
- s[i] = x;
- //同理
- quick_sort(s, l, i - 1);
- quick_sort(s, i + 1, r);
- }
- }
- int main()
- {
- int s[] = { 1,5,7,3,9,8,0,2 };
- int length;
- length = sizeof(s) / sizeof(s[0]);
- quick_sort(s, 0, length - 1);
- for (int i = 0; i < length; i++)
- {
- printf("%-2d", s[i]);
- }
- printf("\n");
- return 0;
- }
复制代码 |
|