内排序-插入排序

插入排序:直接插入排序、折半插入排序、希尔排序;

插入排序的思想:每一步将一个待排序的记录,按其主关键字的大小插入到前面已经排序的文件中适当位置上,直至全部插完为止。 

1、直接插入排序

它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增加1的有序表。

代码实现:

public static void directInsertSort(int[] num){
		int mark=0,j=0;
		for(int i=1;i
   
   
    
    mark){
				while(j>=0&&mark
    
    
   
   

时间复杂度:O(n2)
稳定性:稳定的;
2、折半插入排序
基本操作:通过待插入记录与有序表居中的记录按关键码比较,将有序表一分为二,下次比较在有序子表中进行,这样继续下去,直到要比较的子表中只有一个记录时,比较一次便确定了插入位置。
折半插入排序仅减少了关键字间的比较次数,而记录移动的次数不变。
时间复杂度仍为O(n2)
2-路插入排序(待补充)
public static void binaryInsertSort(int[] num){
		int l,h,m=0;
		int mark=0;
		for(int i=1;i
     
     
      
      num[i])
					h=m-1;
				else
					l=m+1;
			}
//			并非所有情况都需要进行移位操作
			if(!(m==(i-1))){
				//进行移位操作
				if(num[m]>mark){
					for(int j=i-1;j>=m;j--){
						num[j+1]=num[j];
					}
					num[m]=mark;
				}
				else{
					for(int j=i-1;j>m;j--){
						num[j+1]=num[j];
					}
					num[m+1]=mark;
				}
			}
		}
	}
     
     
3、希尔排序
希尔排序又称“缩小增量法”
基本思想:先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
排序过程:先取一个正整数d1<n,把全部记录分成d1个组,所有距离为d1倍数的记录放一组,在各组内进行插入排序;然后d2<d1,重复上述分组和排序工作;直至di=1,即所有记录放进一个组中排序为止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值