//.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void binSort(int data[],int n) /* 按递增序进行二分法插入排序 */
{
int i, j, left, mid, right;
for( i = 1; i < n; i++ )
{
int temp = data[i];
left = 0;
right = i-1; /* 置已排序区间的下、上界初值 */
while (left <= right)
{
mid = (left + right)/2; /* mid指向已排序区间的中间位置 */
if (temp < data[mid])
right = mid-1; /* 插入元素应在左子区间 */
else left = mid+1; /* 插入元素应在右子区间 */
}
for (j = i-1; j >= left; j--)
data[j+1] = data[j]; /* 将排序码大于ki的记录后移 */
if (left != i)
data[left] = temp;
}
}
int main()
{
int data[11]= {10,49,38,65,97,76,13,27,49,50,101};
int i;
binSort(data,11);
for(i = 0; i < 11; i++)
printf("%d ", data[i]);
cout<<endl;
return 0;
}
011折半插入排序
最新推荐文章于 2024-08-28 23:11:16 发布