欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

第1次排序:將第2個元素插入到前邊的有序列表(此時前邊只有一個元素,當然是有序的),之后,這個序列的前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 空間復雜度:如上代碼,使用了一個輔助單元key,空間復雜度為O(1)

3.2 時間復雜度:

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

比較次數(shù)為

201642392631559.gif (92×62)

記錄移動次數(shù)為

201642392724089.gif (99×62)

時間復雜度O(n)

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

比較次數(shù)為

201642392744849.gif (95×62)

記錄移動次數(shù)為

201642392801121.gif (165×62)

時間復雜度O(n^2)

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

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

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

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

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 空間復雜度:如上代碼,使用了一個輔助單元key,空間復雜度為O(1)

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

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

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

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

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

相關文章

  • springboot使用外置tomcat啟動方式

    springboot使用外置tomcat啟動方式

    這篇文章主要介紹了springboot使用外置tomcat啟動方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實現(xiàn)非阻塞式服務器的示例代碼

    Java實現(xiàn)非阻塞式服務器的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)一個簡單的非阻塞式服務器,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以參考一下
    2023-05-05
  • SpringMVC攔截器詳解

    SpringMVC攔截器詳解

    本篇文章主要介紹了SpringMVC攔截器配置及使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java設計模式之狀態(tài)模式詳解

    Java設計模式之狀態(tài)模式詳解

    Java?中的狀態(tài)模式(State?Pattern)是一種行為型設計模式,它允許對象在內部狀態(tài)發(fā)生改變時改變其行為,本文將詳細介紹?Java?中的狀態(tài)模式,我們將從狀態(tài)模式的概述、結構與實現(xiàn)、優(yōu)缺點、適用場景等方面進行講解,需要的朋友可以參考下
    2023-05-05
  • mybatis的動態(tài)SQL以及連接池詳解

    mybatis的動態(tài)SQL以及連接池詳解

    這篇文章主要介紹了mybatis的動態(tài)SQL以及連接池詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 吊打Java面試官!整理了一周的Spring面試大全(附答案)

    吊打Java面試官!整理了一周的Spring面試大全(附答案)

    這篇文章主要介紹了Spring面試資料(附答案)建議收藏留存,學Java的小伙伴都知道Spring是面試的必問環(huán)節(jié),看完了一天就可掌握數(shù)據(jù)結構和算法的面試題,快來看看吧
    2021-08-08
  • 關于QueryWrapper,實現(xiàn)MybatisPlus多表關聯(lián)查詢方式

    關于QueryWrapper,實現(xiàn)MybatisPlus多表關聯(lián)查詢方式

    這篇文章主要介紹了關于QueryWrapper,實現(xiàn)MybatisPlus多表關聯(lián)查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • java獲取ip地址與網(wǎng)絡接口的方法示例

    java獲取ip地址與網(wǎng)絡接口的方法示例

    這篇文章主要給大家介紹了關于利用java如何獲取ip地址與網(wǎng)絡接口的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Java EE項目中的異常處理總結(一篇不得不看的文章)

    Java EE項目中的異常處理總結(一篇不得不看的文章)

    什么是異常?運行時發(fā)生的可被捕獲和處理的錯誤。這篇文章主要介紹了Java EE項目中的異常處理總結,有需要的可以了解一下。
    2016-11-11
  • Java生成隨機姓名、性別和年齡的實現(xiàn)示例

    Java生成隨機姓名、性別和年齡的實現(xiàn)示例

    這篇文章主要介紹了Java生成隨機姓名、性別和年齡的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論