排序 插入排序以及其改進 二分法插入

2021-08-04 23:53:45 字數 828 閱讀 3560

插入排序可以理解我們打牌時,摸一張牌按順序插入一張。

#include // 交換函式

void swap (int a, int i, int j)

// 列印陣列

void printa (int *a, int len)

printf ("\n");

}// 插入排序

int main()

; int len = sizeof(a) / sizeof(a[0]);

int get; // 抓牌

int i,j;

for (i = 1; i < len; i++)

a[j+1] = get; // 將新元素插入第乙個比它小的元素的後面 }

printa (a, len);

return 0;

}

二分法:

#include int main()

; int len = sizeof(a) / sizeof(a[0]);

int left, right,mid,i,j,get;

for (i = 1; i < len; i++)

else // 要插入的位置在mid的右邊

}// 移位操作:將left開始右邊的所有元素都右移一位

for (j = i-1; j >= left; j--)

a[left] = get; // 插入新元素 }

printa (a, len);

return 0;

}

排序 二分法插入排序

不同點 在尋找插入位置的時候採用二分法定位。二分法怎麼定位?執行結果 原陣列 21 8 2 18 0 9 27 12 5 24 第0次迴圈排序結果 8 21 2 18 0 9 27 12 5 24 第1次迴圈排序結果 2 8 21 18 0 9 27 12 5 24 第2次迴圈排序結果 2 8 18...

二分法插入排序

二分法插入排序 演算法思想簡單描述 在插入第i個元素時,對前面的0 i 1元素進行折半,先跟他們 中間的那個元素比,如果小,則對前半再進行折半,否則對後半 進行折半,直到left right,然後再把第i個元素前1位與目標位置之間 的所有元素後移,再把第i個元素放在目標位置上。二分法沒有排序,只有查...

二分法插入排序

二分法插入排序 演算法思想簡單描寫敘述 在插入第i個元素時,對前面的0 i 1元素進行折半,先跟他們 中間的那個元素比,假設小,則對前半再進行折半,否則對後半 進行折半,直到left right,然後再把第i個元素前1位與目標位置之間 的全部元素後移,再把第i個元素放在目標位置上。二分法沒有排序,僅...