最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)直接插入排序和折半插入排序算法示例

 更新時間:2016年04月23日 09:28:12   作者:雙子座  
這篇文章主要介紹了Java實現(xiàn)直接插入排序和折半插入排序算法示例,文中對算法的思想和時間復(fù)雜度都有簡單的講解,需要的朋友可以參考下

直接插入排序​
1 排序思想:

將待排序的記錄Ri插入到已經(jīng)排好序的記錄R1,R2,……,R(N-1)中。

對于一個隨機序列而言,就是從第二個元素開始,依次將這個元素插入到它之前的元素中的相應(yīng)位置。它之前的元素已經(jīng)排好序。

第1次排序:將第2個元素插入到前邊的有序列表(此時前邊只有一個元素,當(dāng)然是有序的),之后,這個序列的前2個元素就是有序的了。
第2次排序:將第3個元素插入到前邊長度為2的有序列表,使得前2個元素是有序的。
以此類推,直到將第N個元素插入到前面長度為(N-1)的有序列表中。

2 算法實現(xiàn):

// 直接插入排序
void straight_insert_sort(int num[], int len){
 int i,j,key;
 for(j=1;j<len;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 空間復(fù)雜度:如上代碼,使用了一個輔助單元key,空間復(fù)雜度為O(1)

3.2 時間復(fù)雜度:

3.2.1 最好情況:待排序記錄已經(jīng)是有序的,則一趟排序,關(guān)鍵字比較1次,記錄移動2次。則整個過程

比較次數(shù)為

201642392631559.gif (92×62)

記錄移動次數(shù)為

201642392724089.gif (99×62)

時間復(fù)雜度O(n)

3.2.2 最壞情況:待排序記錄已經(jīng)是逆序的,則一趟排序,關(guān)鍵字比較次數(shù)i次(從i-1到0),記錄移動(i+2)次。整個過程

比較次數(shù)為

201642392744849.gif (95×62)

記錄移動次數(shù)為

201642392801121.gif (165×62)

時間復(fù)雜度O(n^2)

3.2.3 平均時間復(fù)雜度:O(n^2)

3.3 穩(wěn)定性:穩(wěn)定

折半插入排序
1 排序思想:

直接排序的基礎(chǔ)上,將待排序的記錄Ri插入到已經(jīng)排好序的記錄R1,R2,……,R(N-1)中,由于記錄R1,R2,……,R(N-1)已經(jīng)排好序,所以在查找插入位置時可采用“折半查找”。

2 算法實現(xiàn):

// 折半插入排序
void binary_insert_sort(int num[], int len){
 int i,j,key,low,high,mid;
 for(i=1;i<len;i++){
  key=num[i];
  low=0;
  high=i-1;
  mid=(low+high)/2;
  // 尋找插入點,最終插入點在low
  while(low<=high){
   if(key<num[mid])
    high=mid-1;
   else 
    low=mid+1;
   mid=(low+high)/2;
  }
  // 移動記錄
  for(j=i;j>low;j--){
   num[j]=num[j-1];
  }
  // 插入記錄
  num[low]=key;
 }
}

3 性能分析:

3.1 空間復(fù)雜度:如上代碼,使用了一個輔助單元key,空間復(fù)雜度為O(1)

3.2 時間復(fù)雜度:雖然折半查找減少了記錄比較次數(shù),但沒有減少移動次數(shù),因此時間復(fù)雜度同直接查找算法。

3.2.1 最好情況:時間復(fù)雜度O(n)

3.2.2 最壞情況:時間復(fù)雜度O(n^2)

3.2.3 平均時間復(fù)雜度:O(n^2)

3.3 穩(wěn)定性:穩(wěn)定

相關(guān)文章

最新評論

兴山县| 屏东县| 商水县| 阳西县| 漾濞| 荔波县| 玉林市| 武清区| 灵石县| 布拖县| 射阳县| 佛教| 威信县| 普安县| 德清县| 玛纳斯县| 荥经县| 长宁区| 浠水县| 竹北市| 黄骅市| 葫芦岛市| 雷山县| 囊谦县| 大足县| 汶川县| 乌海市| 富阳市| 盐城市| 满洲里市| 长垣县| 麦盖提县| 张北县| 英吉沙县| 旬阳县| 申扎县| 高青县| 佛山市| 宜兴市| 大同县| 重庆市|