栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现一趟快速排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现一趟快速排序算法

C语言实现一趟快速排序算法 题目:设计算法,完成一趟快速排序。即将下标从low到high的元素以r[low]为基准分成两部分,小的在前,大的在后。 算法思想:

设要排序的数组是r[ ],首先选取第一个元素,即r[low]作为基准数据,也就是枢轴,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟快速排序。
具体过程为:
1)设置两个变量low、high分别指向第一个元素和最后一个元素;

2)每次都是将该数组第一个元素作为基准数据,赋值给pivot(枢轴),即pivot = r[low];

3)从high开始从后向前进行对比,当r[high] < pivot时,将r[high]赋值给r[low],然后再从low开始,从前往后进行对比,当r[low] > pivot时,将r[low]赋值给r[high],然后再从high开始从后向前对比,如此往复,知道low = high,此事就完成了一趟快速排序。

代码实现
// 一趟快速排序
int QuickSort (int r[], int low, int high) {
	int pivot = r[low];	//将第一个元素作为枢轴
	while (low < high) { //用low、high作为循环结束的判断标志,以搜索枢轴的最终位置
		while (low < high && r[high] >= pivot) //当high处的元素大于或等于枢轴
			--high;		//high向前移动,继续进行对比
		r[low] = r[high];	//当high处的元素小于枢轴,则该元素移动到左端,即low所处位置
		while (low < high && r[low] <= pivot)  //当low处的元素小于或等于枢轴
			++low;		//low向后移动,继续进行对比
		r[high] = r[low];	//当low处的元素大于枢轴,则该元素移动到右端,即high所处位置
	}
	r[low] = pivot;	//当循环结束时,low所处位置即为枢轴元素存放的最终位置
	return low;		//返回存放枢轴的最终位置
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656603.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号