c语言经典排序算法(8种-含源代码)(6)

发布时间:2021-06-06

鸡尾酒配方

* 这样一来比mid大的都会跑到mid的右侧,小于mid的会在左侧,

* 最后一行,返回的low是中间元素的位置,左右分别递归就可以排好序了。

*/

int Partition(int data[],int low,int high)

{

int mid;

data[0]=data[low];

mid=data[low];

while(low < high)

{

while((low < high) && (data[high] >= mid))

{

--high;

}

data[low]=data[high]; /* 从high的位置开始往low的方向找,找到比data[low]小的元素,存到data[low]中 */

while((low < high) && (data[low] < mid)) /* 新得到的data[low]肯定小于原来的data[low]即mid */

{

++low;

}

data[high]=data[low]; /* 从low的位置开始往high的方向找,找到比data[high]大的元素,存在data[high]中 */

}

data[low]=data[0]; /* 把low的新位置存上原来的data[low]的数据 */

return low; /* 递归时,把它做为右侧元素的low */

}

八.堆排序

/**************************************************************

* 堆的定义 n 个元素的序列 {k1,k2,...,kn}当且仅当满足下列关系时,

* 称为堆:

* ki<=k2i ki<=k2i+1 (i=1,2,...,n/2)

* 或

* ki>=k2i ki>=k2i+1 (i=1,2,...,n/2)

* 堆排序思路:

* 建立在树形选择排序基础上;

* 将待排序列建成堆(初始堆生成)后,序列的第一个元素(堆顶元素)就一定是序列中的最大元素;

c语言经典排序算法(8种-含源代码)(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219