#include<stdio.h>
#include <strings.h>
#define MAXSIZE 20
typedef struct
{
int arr[MAXSIZE];
int length;
}tree;
void initTree(tree* T)
{
bzero(T,sizeof(tree));
T->length = 4;
T->arr[0] = 3;
T->arr[1] = 5;
T->arr[2] = 8;
T->arr[3] = 14;
}
int length = 4;
/**
* 折半插入排序算法
*/
void insertBinarySort(int data,tree* T)
{
//插入排序
int mid,high,low;
int j;
//查找插入位置
low = 0;
high = T->length -1;
while (low <= high)
{
mid = (low+high)/2;
if(data < T->arr[mid])
{
high = mid-1;
}else{
low = mid + 1;
}
}
//找到插入位置后进行插入并且对所有元素后移
T->length++;
for(j = T->length;j>=high+1;j--)
{
T->arr[j+1] = T->arr[j];
}
T->arr[high+1] = data;
}
void printTree(tree *T)
{
int i;
for(i=0;i<T->length;i++)
{
printf("%d\n",T->arr[i]);
}
}
int main()
{
tree dataTree;
initTree(&dataTree);
insertBinarySort(6,&dataTree);
insertBinarySort(15,&dataTree);
printTree(&dataTree);
return 0;
}
插入排序学习(三) 折半排序
猜你喜欢
转载自blog.csdn.net/qq_32783703/article/details/104252755
今日推荐
周排行