问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何理解快速排序算法的思想?

发布网友 发布时间:2022-05-06 03:31

我来回答

1个回答

热心网友 时间:2022-04-22 18:30

#include <iostream>
using std::cout;
using std::endl;

int Partition( int *R, int low, int high){
// 对记录子序列 R[low..high] 进行一趟快速排序,并返回枢轴记录
// 所在位置,使得在它之前的记录的关键字均不大于它的关键字,
// 而在它之后的记录的关键字均不小于它的关键字
R[0] = R[low]; // 将枢轴记录移至数组的闲置分量
int pivotkey = R[low]; // 枢轴记录关键字
cout << endl << "pivotkey : " << pivotkey << endl;
while(low < high){ // 从表的两端交替地向中间扫描
while( low<high && R[high]>=pivotkey ){
--high;
}
if(low < high){//需要进行这样的判断,如果是由于low>=high而退出的循环,不需要移动数据
R[low++] = R[high]; // 将比枢轴记录小的记录移到低端
//cout << "移动的hign数据:" << R[high] << endl;
}
while (low<high && R[low]<=pivotkey )
++low;
if(low < high){
R[high--] = R[low]; // 将比枢轴记录大的记录移到高端
//cout << "移动的low数据:" << R[low] << endl;
}
} // while
R[low] = R[0]; // 枢轴记录移到正确位置
//cout << "返回的pivotkey: " << low << endl;
for(int i = 1; i<=10; i++){
cout << R[i-1] << " ";
}
return low; // 返回枢轴位置
} // Partition
void QSort(int *R, int s, int t ){
// 对记录序列 R[s..t] 进行快速排序
if (s < t){ // 长度大于1
int pivotloc = Partition(R, s, t);// 对 R[s..t] 进行一趟快排,并返回枢轴位置
QSort(R, s, pivotloc-1);//对低子序列递归进行排序
QSort(R, pivotloc+1, t);//对高子序列递归进行排序
}//if
}//Qsort
int main(){
int li[10] = {0,38,65,97,76,13,27,48,55,4};
cout<<"注意:R[0]为数组的闲置分量"<<endl;
for(int i = 1; i<=10; i++){
cout << li[i-1] << " ";
}
cout << endl;
QSort(li,1,9);
cout << endl;
for(int i = 1; i<=10; i++){
cout << li[i-1] << " ";
}
cout << endl;
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天秤男吃醋的八大表现 天秤座男生吃醋时的表现 人工授精之后注意什么 人授后需要卧床休息吗 ...经两个月没发工资了,我不想干了,老板不给钱怎么办? 新手玩《兰斯10》这款游戏的快速通关攻略是什么? 兰斯10怎么用食券快速刷SSR 兰斯10二周目7cp怎么达成 兰斯10大侵攻达成条件介绍 跳舞同手同脚叫什么来着 喷油嘴清洗机主要功能 我想知道快速排序原理 我知道快速排序的算法 我就想知道快速排序为什么... 什么叫快速排序 看了很多书,但还是没有明白快速排序的原理?哪位大侠帮帮我用通俗的语 ... 平等王的神诞? 超速10% 以上不到20% 怎么处罚 九个月宝宝冬天穿多大码衣服 下面这个WORD是怎么弄,弄成两个小表格的形式? 六个月宝宝冬天连体棉衣穿 工程造价中所说的定额直接费是什么意思 中国高考语文刁钻古怪作文题有哪一些 腊月多少日敬灶神菩萨 冬天六七个月的宝宝穿什么衣服 灶神生日哪一天 灶神菩萨的生日是什么时间? 民俗里灶王爷的生日是哪天? 工程造价中套定额的详细步骤?- 问一问 excel里ROUND(工程量计算式,2)怎么组成的? 邮箱地址下面带下划线要怎么输入 如邮箱地址中123几个数字下面带下划线 我要怎么输入 不要回答什么shift+ 邮箱地址中出现下划线,应该怎么输入? 梦见自己领结婚证然后又被我妈撕了求解 快速排序算法的排序演示 - 信息提示 怎样的男人才叫成熟? 快递的挣钱方式 男人怎么样才能叫做成熟? 怎样男人叫成熟 怎么才算是成熟的男人啊? 怎么叫成熟的男人 男人怎么样才叫成熟? 怎样才叫成熟的男人 墨笔迹画在衣服上如何去除? 冬天的衣服画了毛笔水墨,怎么才能洗掉 黑墨水画在衣服上怎么洗 谁会在衣服上画水墨画 我有一条雪纺的长裙,弄上了墨水。怎么洗都洗不掉。想寻求高手在裙子上面画上水墨画 国画墨水可以用蓝月亮可以洗掉吗 什么是后缀?常用的文件后缀名有? 怎么才知道文件的后缀名是什么? 0首付购车条件有什么套路? 司法考试过了有什么用呢 电脑记账怎么入门