大神總結的很好。學而時習之,善於總結。
//非常恨那些把演算法排序之類的搞得異常麻煩的人, 盡可能簡單一點, 簡單了, 容易理解了, 才好記, 上了戰場, 才用得著.
//人家的不好用, 只好自己總結, 重寫原理與過程.^_^
//口訣:
//冒泡: n-1, n-i-1, 比的是j與j+1
//插入: n-1, i+1, 比的是i+1與j
//選擇: n, n, 開始變成i+1, 比的卻是i與j
package com.yenange.sort;
/**
* 三種最常見的排序
*/ public class sortnumber ; //原陣列
printarr(arr); //輸出
bubblesort(arr);
insertsort(arr);
selectsort(arr);
printarr(arr);
}/**
* 1.氣泡排序
* @param arr
* 原理:從底層的元素開始, 用它和它緊挨著的元素相比較, 如果下面的元素(下標較小的)大於上面的元素,
* 就交換它們,否則保持原樣.然後轉到上一層的元素, 重複上面的過程, 最後, 最大的元素位於下標最大處
* 這時呢, 重複上面的冒泡過程, 因為最大的已經出來了(不需要比最後那乙個了), 所以這一次的迴圈就應
* 該比上次要少一次.c#p327
* ***
* **
* *
*/ private static void bubblesort (int arr)
} }
} /**
* 2.插入排序
* @param arr
* 原理:抽出牌, 在前面的牌中尋找相應的位置插入, 然後下一張. 一組數字中的每個元素在經過檢查後,
* 放入已排序的元素列表中的適當位置. 當最後乙個數字放入合適位置時, 該組資料排序完畢.
* 那它與冒泡有什麼區別呢?
* 冒泡的比較過程中, 兩個相鄰元素比較,依次往上走. 內迴圈中,參與比較沒有固定的元素.
* 插入則是抽出本次迴圈中的最後乙個元素, 與它前面的元素相比較, 比較的過程中, 有乙個元素是固定的
* 冒泡比較是越比較越少, 插入排序是越比較越多.
* *
* **
* ***
*/ private static void insertsort(int arr)
} }
} /**
* 列印陣列內容
* @param arr
*/ private static void printarr(int arr)
system.out.println(); } }
程式設計師必須掌握的排序演算法
氣泡排序 bubble sort 是一種較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個演算法的名字由來是因為越大的元素會...
必須掌握的八種排序(1 2) 插入排序,希爾排序
演算法專欄 很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。排序方法可以分為五種 插入排序 選擇排序 交換排序 分配排序和歸併排序。在排序過程中,全部記錄存放在...
必須掌握的八種排序(1 2) 插入排序,希爾排序
很多人演算法和資料結構不好,歸根結底就是基礎不紮實,演算法和資料結構不好的話,達到的高度肯定不會很高,最近重新加強了一下自己的演算法基礎,決定從最基礎的內容開始,如有不足的地方,歡迎指正。排序方法可以分為五種 插入排序 選擇排序 交換排序 分配排序和歸併排序。在排序過程中,全部記錄存放在記憶體,則稱...