[java]插入排序及折半插入排序
package sort_book_datastruction;
import java.util.Arrays;
/**
* 插入排序:主要是將待排序的元素插入到已經排好序的列表中,從而程式設計長度加1的有序表;
* 具體步驟:例如第i個元素是待排序的元素,則前i-1個元素是已經非遞減排列的序列,將第i個元素插入到前面已經排好的序列中,
* 該元素從第i-1個元素進行比較,如果大於第i-1個元素,則直接插入;
* 如果小於,則第i-1的元素向後移一位,同時比較與第i-2元素的大小,依次向前比較,直到排在了正確的位置。
* 在比較之前,要將可能發生右移的待排序元素建立監視哨。
* @author Administrator
*/
public class InsertSort {
public void insertSort(int[] array){
int length = array.length;
for(int i = 1;i<length;++i){//i表示迴圈在哪一趟;
if(array[i]<array[i-1]){
int j = i-1;
int key = array[i];//key待排序元素
while(j>=0 && array[j]>key){
array[j+1] =array[j];
j--;
}
array[j+1] = key;
}
}
}
/**
* 折半插入排序
* @param array
*/
public void insertSort2(int[] array){
int length = array.length;
for(int i =1;i<length;i++){
if(array[i-1]>array[i]){
int key = array[i];//待插入元素
int j = i-1;
int low = 0,high = j;
while(low<=high){
int m = (high - low)/2+low;
if(key<array[m]) high = m-1;
else low = m+1;
}
while(j>=high+1){
array[j+1] = array[j];
j--;
}
array[j+1]=key;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
InsertSort is = new InsertSort();
int[] a={8,2,5,3,8,11,6,15,9,45,7,5};
is.insertSort(a);
//is.insertSort2(a);
System.out.println(Arrays.toString(a));
}
}
相關文章
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 排序演算法__折半插入排序排序演算法
- 排序演算法之折半插入排序排序演算法
- C語言例題19:折半插入排序C語言排序
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 好程式設計師Java乾貨分享5分鐘瞭解折半插入排序程式設計師Java排序
- 插入排序排序
- 二分查詢和折半插入排序一塊說說-很合適~~~排序
- 03 插入排序排序
- python插入排序Python排序
- 插入排序排序排序
- 如何理解插入排序?排序
- 插入排序-by-Python排序Python
- 插入排序(Insertion Sort)排序
- Java常見排序演算法之插入排序Java排序演算法
- 插入排序以及優化排序優化
- 連結串列-插入排序排序
- JavaScript實現:插入排序!!!JavaScript排序
- 直接插入排序排序
- 常用演算法-插入排序演算法排序
- 排序專題 -- (1)插入排序排序
- 用JavaScript實現插入排序JavaScript排序
- 桶排序 選擇,插入排序排序
- Java實現氣泡排序和插入排序演算法Java排序演算法
- 氣泡排序 插入排序 快排排序
- 實時插入排序演算法排序演算法
- 插入排序就這麼簡單排序
- rust-algorithms:1-插入排序RustGo排序
- JavaScript ,Python,Go,java,C#系列演算法之【插入排序】JavaScriptPythonGoC#演算法排序
- PHP 演算法02之插入排序PHP演算法排序
- 圖解選擇排序與插入排序圖解排序
- Python進階-演算法-插入排序Python演算法排序
- 死磕演算法之插入排序演算法排序
- PHP 排序演算法之插入排序PHP排序演算法
- 小白懂演算法之插入排序演算法排序
- 複習一:陣列(4)-插入排序陣列排序
- 直接插入排序演算法排序演算法
- 從演算法開始(插入排序)演算法排序
- 從演算法開始[插入排序]演算法排序