请教一段看不懂的排序的代码!

神的理想 神的理想 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下面这段快排代码运行结果看起来是正确的,但是其中的数据交换,为什么看起来感觉是把已有的数据给覆盖掉了,但是如果输出结果又是争取的了?

//快速排序;
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]<<" ";
}
}
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
神的理想
C++ 语言 65,214 成员 250,514 内容