回归大学C语言数据结构(五)——多种排序算法

本文探讨了C语言中的五种排序算法:插入排序(直接插入、二分法插入、表插入排序、Shell排序)、选择排序(直接选择、堆排序)、交换排序(冒泡排序、快速排序)、分配排序(基数排序)和归并排序(内排序、外排序)。通过核心代码展示算法原理,其中特别提到了Shell排序的时间复杂度和《计算机程序设计艺术》的相关内容。
摘要由CSDN通过智能技术生成

    排序有多种,里面的算法很巧妙,不写例子,只敲些核心代码。总体的有插入,选择,交换,分配,归并五种。有些没解释的是我感觉很难或者很偏。

 

一、插入

    1.直接插入

     最直接明了,依次拿出排序码中的每一个,与前面的数比较大小,插入相应的位置。直至所有的数字比较完毕。

 

int i,j,n;
//n为排序码个数   data[n]为整个排序码组 
Node temp;
for(i = 1; i < n; ++i){
	temp = data[i];
	for(j = i-1; temp.value < data[i].value && j >= 0; j--)
		data[j+1] = data[j];//从取出的数字后面开始往前面取,比该数字大的往前移
	if(j != i -1) data[j+1] = temp; //如果循环中取出的数字保持原位不动 则不用更改 
}

 

    2.二分法插入

 

不用依次对比,如果前面的排好序,只需要找到前面排序码组的中间数,数大则在中间的前面,反之即后。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iaiti

赏顿早餐钱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值