#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; }
插入排序學習(三) 折半排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.