请教一段看不懂的排序的代码!
下面这段快排代码运行结果看起来是正确的,但是其中的数据交换,为什么看起来感觉是把已有的数据给覆盖掉了,但是如果输出结果又是争取的了?
//快速排序;
void quick_sort(int arr[], int _left, int _right)
{
if (_left < _right)
{
int left = _left, right = _right, x = arr[_left];
while(left < right)
{
// 从右向左找第一个小于x的数;
while(left < right && arr[right] >= x)
right--;
if(left < right)
arr[left++] = arr[right]; //这里
// 从左向右找第一个大于等于x的数;
while(left < right && arr[left] < x)
left++;
if(left < right)
arr[right--] = arr[left];//和这里
}
arr[left] = x;
// 递归调用 ;
quick_sort(arr, _left, left - 1);
quick_sort(arr, left + 1, _right);
}
}
void test_quick_sort(void)
{
int aa[50] ={5,23,12,143,80,69,8,12,32,619,
15,23,312,413,30,26,8,212,72,119,
59,36,122,3,17,86,18,32,62,29,
25,29,1,243,40,6,118,52,11,19,
35,13,92,432,18,36,84,112,23,39,};
quick_sort(aa,0,49);
for(int i = 0 ; i<50; i++)
{
cout<<aa[i]<<" ";
}
}
...全文
相关推荐
对一段数据进行排序的代码
这是个简单的排序程序 对于一段数据能很快排序
C语言实现选择排序、冒泡排序和快速排序的代码示例
主要介绍了C++中实现选择排序、冒泡排序和快速排序的代码示例,例子带有执行时间统计还可以简单看一下效率对比,需要的朋友可以参考下
输出拓扑排序所有序列的c代码
使用简单易懂的回溯算法将拓扑排序的所有序列输出,通过递归和深度优先搜索,核心思想是在查询到结果之后返回到上一级,同时将已访问点的入度加1,使其恢复未访问状态
排序算法实现代码与伪代码
本压缩包中包含了各种冒泡算法的代码实现与伪代码实现,附有对排序算法思想的解释,方便读者快速掌握排序算法。
数据结构实验报告-内部排序-多种排序算法的实现-(含希尔排序!)-代码及运行截图
输入n个整数,分别用希尔排序、快速排序、堆排序和归并排序实现由小到大排序并输出排序结果。要求n=10,15,20进行三组排序实验。 实验目的:掌握希尔排序、快速排序、堆排序、归并排序算法。 (zip中含代码及运行截图)


