一、選擇排序
/**
* * @author eric
* 從最左邊下標開始,將該下標的元素和它右邊所有元素比較,每一趟遍歷找出最小元素的下標
* 然後將最小下標的元素和每一趟遍歷開始的最左邊下標的元素互換,即每一趟遍歷都將最小值放在開始遍歷的最左的下標位置
*/public
class
selectionsort
public
static
void
sort
(int
arr)
}// 交換開始遍歷的最左和最小下標的元素
if(i != minindex)}}
/** * 交換兩個下標的元素
* * @param arr 要排序的陣列
* @param i 下標1
* @param j 下標2
*/private
static
void
swap
(int
arr,
int i,
int j)
}
/**
* * @author eric
* */
// 實現了comparable介面的類,支援排序
public
class
student
implements
comparable
// 定義student的compareto函式
// 如果分數相等,則按照名字的字母序排序
// 如果分數不等,則分數高的靠前
@override
public
intcompareto
(student that)
// 定義student例項的列印輸出方式
@override
public string tostring()
}
二、插入排序
int j;
for(
int i =
1; i < intarray.length; i++
) intarray[j]
= temp;
}
時間複雜度:==> 對於幾乎有序的陣列,插入排序效果非常高,時間複雜度近乎o(n) 資料結構之簡單演算法(氣泡排序 選擇排序 插入排序)
簡單的js資料 實現氣泡排序 1.定義乙個簡單的無序陣列 var num 12,13,10,31,11,19 2.反向迴圈,每次剔除最右邊的數,因此次數越來越少 for var j num.length 1 j 0 j 選擇排序是對氣泡排序的改進,比氣泡排序的效率高一點,但與其他演算法比較效率較低 ...
資料結構和演算法 冒泡 選擇 插入排序演算法
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數 也就是第一波冒泡完成 針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。如下 publ...
資料結構 排序演算法 插入排序 選擇排序
今天我們來總結一下資料結構中各種排序演算法。資料結構排序演算法 part1 直接插入排序 思想 當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好 序,此時用array i 的排序碼與array i 1 array i 2 的排序碼順序進行比較,找到插入...