演算法篇 插入排序和選擇排序演算法

2021-09-06 20:39:15 字數 1612 閱讀 6828

假設我們輸入的是 「5,1,4,2,3」 我們從第二個數字開始,這個數字是1,我們的任務只要看看1有沒有正確的位置,我們的做法是和這個數字左邊的數字來比,因此我們比較1和5,1比5小,所以我們就交換1和5,原來的排列就變成了「1,5,4,2,3 」

接下來,我們看第3個數字有沒有在正確的位置。這個數字是4,它的左邊數字是5,4比5小,所以我們將4和5交換,排列變成了 「1,4,5,2,3 "我們必須繼續看4有沒有在正確的位置,4的左邊是1,1比4小,4就維持不動了。

再來看第四個數字,這個數字是2,我們將2和它左邊的數字相比,都比2大,所以就將2一路往左移動,一直移到2的左邊是1,這時候排序變成了 「1,2,4,5,3 」

最後,我們檢查第五個數字,這個數字是3,3必須往左移,一直移到3的左邊是2為止,所以我們的排列就變成了 「1,2,3,4,5 」排序因此完成了。

所謂插入排序法,就是檢查第i個數字,如果在它的左邊的數字比它大,進行交換,這個動作一直繼續下去,直到這個數字的左邊數字比它還要小,就可以停止了。插入排序法主要的迴圈有兩個變數:i和j,每一次執行這個迴圈,就會將第i個數字放到左邊恰當的位置去。

**實現:

package

com.zc.manythread;

/*** 插入排序

* @author

偶my耶

* */public

class

insertionsort

data[j] =temp;}}

}public

static

void

main(string args) ;

insertion_sort(data);

for (int i = 0; i < data.length; i++)

}}

選擇排序是一類借助「選擇」 進行排序的方法。其主要思想是:沒趟排序在當前排序序列中選出關鍵碼最小的記錄,天機到有序序列中。選擇排序比較獨特的地方是:記錄的移動次數少。

選擇排序源**:

package

com.zc.manythread;

/*** 選擇排序

* @author

administrator *

*/public

class

selectsort

}if (index!=i)

}return

date;

}/**************

* * 建立陣列資料

* ****************

*/private

static

int createdate(int

count)

return

data;

}/**************主函式****************

*/public

static

void

main(string args)

system.out.println();

int data2=new

selectsort().selectsort(data);

for (int

n:data)

}}

java演算法篇 插入排序和選擇排序演算法

假設我們輸入的是 5,1,4,2,3 我們從第二個數字開始,這個數字是1,我們的任務只要看看1有沒有正確的位置,我們的做法是和這個數字左邊的數字來比,因此我們比較1和5,1比5小,所以我們就交換1和5,原來的排列就變成了 1,5,4,2,3 接下來,我們看第3個數字有沒有在正確的位置。這個數字是4,...

排序演算法 插入排序和選擇排序

二者演算法分析 穩定性 時間複雜度 希爾排序 希爾排序是直接插入排序的優化,但當待排序數列很大時,預排序過程效率會降低許多,時間複雜度為o n2n2 空間複雜度 空間複雜度都為o 1 在進行排序時,會建立臨時常數個臨時變數用於控制下標 直接插入排序 void insertsort datatype ...

氣泡排序演算法,選擇排序演算法,插入排序演算法

這是最基本的三種排序演算法,比它效率高的還有歸併排序,堆排序,快速排序等演算法,作為乙個it民工應該好好掌握。氣泡排序,選擇排序和插入排序都有兩層迴圈,時間複雜度均為o n 2 下面逐一介紹 氣泡排序 1.外層迴圈,控制冒泡次數,起始從loop 1開始,結束標識是loop2.內層迴圈,選出對應輪的最...