插入排序可以理解我們打牌時,摸一張牌按順序插入一張。
#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個元素放在目標位置上。二分法沒有排序,僅...