C语言实现八种排序(1)

C语言实现八种排序(1),第1张

1. 插入排序

什么是插入排序?

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。


1.1 简单插入排序

代码实现如下:


void InsertSort(int*a,int length){
	int i,j;
	for(i=1;i 

但我们认为这种插入的方法仍有改进的可能,所以我们创建了一种新的插入方法  -- 折半插入

注意:我们这里实现的都是从小到大排序!

代码实现如下:

void InsertSort(int*a,int length){
	int i,j,left,right;
	for(i=1;ikey){   
				right=mid-1;
			}else{
				left=mid+1;
			}
		}
		for(j=i-1;j>=right+1;j--){
			a[j+1]=a[j];
		}
	  a[right+1]=key;	
	
  }
}
1.2 希尔排序

希尔排序也是一种插入排序,我们发现在排序前越接近基本有序,插入排序的效率就越高,为了提高我们的效率,我们可以进行多次跨越排序,尽可能的使得我们的排序速率更快。


实现代码如下:

void ShellSort(int*a,int d,int length){
	int i,j;
	for(;d>=0;d-=2){//逐渐减少步幅,直到为1就成为了普通插入排序
		for(i=d;i 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)