码迷,mamicode.com
首页 > 编程语言 > 详细

排序--折半插入

时间:2015-06-18 13:36:45      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
using namespace std;
#define SIZE 21
typedef int Sqlist[SIZE];

void BInsertSort(Sqlist &L,int n)
{
	int i,j;
	int low;
    int high;
	int mid;
   for(i=2;i<n;++i)   
   {
      L[0] = L[i];
      low = 1;   
	  high = i;    
	  while(low <= high) 
	  {
	    mid = (low + high)/2;  
		if(L[0] > L[mid])
			low = mid+1;      
		else
			high = mid-1;    
	  }
	  for(j = i;j > high+1 ;--j) 
	  {
	    L[j] = L[j-1];     
	  }
	  L[high+1] = L[0];
   }
}
void main()
{
	Sqlist L= {0,49,38,65,97,76,13,27};
	BInsertSort(L,8);
	for(int i=1;i<8;++i)
	  cout<<L[i]<<" ";
	cout<<endl;
}


技术分享

分析:折半插入排序法相对于直接插入法,减少了比较的次数,但是没有减少移动的次数,没有很好的优化直接插入法。

排序--折半插入

标签:

原文地址:http://blog.csdn.net/zr1076311296/article/details/46546585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!