本次學習主要內容:氣泡排序、選擇排序、插入排序
1.比較兩個資料項
2.交換兩個資料項或者複製其中一項
1.從第二項開始,依次與前一項進行比較
2.前一項大於後一項則交換位置,否則無動作
3.向右移動,進行下一次比較
4.比較至最後一項後從步驟1開始重複,直到整個陣列有序
因為最大的資料項總是「冒泡」到陣列的頂端,故稱「氣泡排序」
int sort=new int[100];
random r = new random();
int temp=0;
for (int i = 0; i < sort.length; i++)
for (int i = sort.length; i > 0; i--) else }}
for (int i : sort)
由於每一次都會將當前最大的數字排至隊尾,所以內層迴圈應當迴圈(陣列長度-外層迴圈次數)次
陣列長度為n,則進行n次排序,第i次排序比較了n-i次
也就是做了n^2/2次比較
也就是時間複雜度為
o(n^2)
1.找到當前資料中最小值
2.與當前資料中下標最小值交換
3.重複步驟1開始,直到整個陣列有序
int sort = new int[100];
random r = new random();
int temp = 0;
int sign = 0;
for (int i = 0; i < sort.length; i++)
for (int i = 0; i < sort.length; i++)
} temp = sort[i];
sort[i] = min;
sort[sign] = temp;
}for (int i : sort)
根據比較次數來講,與冒泡交換無異,但是交換次數要少的多,少於陣列長度,雖然時間複雜度為
o(n^2)
但是無疑要比氣泡排序要快,當n值較小時,特別的交換時間級比比較時間級大得多的時候,選擇排序是相當快的
1.選取乙個標誌,要求標誌左端有序
2.從標誌起,將右側資料依次向左側的有序陣列中插入
3.從步驟1開始重複,直到整個陣列有序
int sort = new int[100];
random r = new random();
int temp = 0;
for (int i = 0; i < sort.length; i++)
for (int i = 1; i < sort.length; i++)
sort[j] = temp; }}
for (int i : sort)
在第一次排序中最多比較一次,第二次排序中最多比較兩次,依次類推,最後一次比較n-1次。故最多比較n*(n-1)/2次
然而在每次次排序發現插入點之前平均只有一般的資料參與了比較,也就是約比較n*(n-1)/4次
複製次數大致等於比較次數,故對於隨機資料而言,比氣泡排序快一倍,比選擇排序略快
然而對於已經有序或者基本有序的資料而言,插入排序要好得多,由於while條件多數為假,故此之變成了外層迴圈的乙個簡單語句
所以有序情況:o(n)
無序情況:o(n^2)
資料結構與演算法 3 簡單排序
氣泡排序的api設計 class bubble 兩個數之間換位置 private static void exch comparable a,int i,int j 適用於輸入規模比較少的時候 選擇排序的api設計 public class testselection selection.sort ...
java資料結構和演算法 第3章 簡單排序
氣泡排序 選擇排序 插入排序 public class sortdemo bubblesort a system.out.println int b selectsrot b system.out.println int c insertsort c 氣泡排序 public static void ...
資料結構 簡單排序
1 氣泡排序 package chap02 public class bubblesort 測試類 package chap02 public class testsort system.out.println 排序前 system.out.print for int i 0 i arr.lengt...