|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qwe1231069 于 2017-2-26 15:18 编辑
- #include <stdio.h>
- void quick_sort(int carry[], int left, int right);
- void quick_sort(int carry[], int left, int right)
- {
- int i, j, middle, temp;
- middle = carry[(left + right) / 2];
- i = left;
- j = right;
- while(i <= j)
- {
- while(carry[i] < middle)
- {
- i++;
- }
- while(carry[j] > middle)
- {
- j--;
- }
- if(i < j)
- {
- temp = carry[j];
- carry[j] = carry[i];
- carry[i] = temp;
- i++;
- j--;
- }
- }
- if(left < j)
- {
- quick_sort(carry, left, j);
- }
- if (i < right)
- {
- quick_sort(carry, i, right);
- }
- }
- int main()
- {
- int carry [] = {1, 2, 34, 46, 356, 11, 567, 65, 234, 64, 123, 64, 22,78};
- int i;
- int length = (sizeof(carry) / sizeof(carry[0]));
- quick_sort(carry, 0, length - 1);
- for(i = 0; i < length; i++)
- {
- printf("%d ", carry[i]);
- }
- putchar('\n');
- return 0;
- }
复制代码
我就是按照小甲鱼教的做的,结果一直死循环。
我调试的结果是i和j最终指向同一个值,然后死循环。
想不明白,求解! |
|