java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例
1 排序思想:
將待排序的記錄Ri插入到已經排好序的記錄R1,R2,……,R(N-1)中。
對于一個隨機序列而言,就是從第二個元素開始,依次將這個元素插入到它之前的元素中的相應位置。它之前的元素已經排好序。
第1次排序:將第2個元素插入到前邊的有序列表(此時前邊只有一個元素,當然是有序的),之后,這個序列的前2個元素就是有序的了。
第2次排序:將第3個元素插入到前邊長度為2的有序列表,使得前2個元素是有序的。
以此類推,直到將第N個元素插入到前面長度為(N-1)的有序列表中。
2 算法實現:// 直接插入排序
void straight_insert_sort(int num[], int len){
int i,j,key;
for(j=1;j
key=num[j];
i=j-1;
while(i>=0&&num[i]>key){
num[i+1]=num[i];
i--;
}
num[i+1]=key;
}
}
復制代碼
3 性能分析:
3.1 空間復雜度:如上代碼,使用了一個輔助單元key,空間復雜度為O(1)
3.2 時間復雜度:
3.2.1 最好情況:待排序記錄已經是有序的,則一趟排序,關鍵字比較1次,記錄移動2次。則整個過程
比較次數為
記錄移動次數為
時間復雜度O(n)
kmhx.b2b168.com
kmhuaxi.51sole.com
http://www.wenbing.cn/kmhx/
3.2.2 最壞情況:待排序記錄已經是逆序的,則一趟排序,關鍵字比較次數i次(從i-1到0),記錄移動(i+2)次。整個過程
比較次數為
記錄移動次數為
時間復雜度O(n^2)
3.2.3 平均時間復雜度:O(n^2)
3.3 穩定性:穩定
折半插入排序1 排序思想:
直接排序的基礎上,將待排序的記錄Ri插入到已經排好序的記錄R1,R2,……,R(N-1)中,由于記錄R1,R2,……,R(N-1)已經排好序,所以在查找插入位置時可采用“折半查找”。
總結
以上是生活随笔為你收集整理的java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 月光曲的作者是谁啊?
- 下一篇: 我没有水王,要不要买技能石?