//非常恨那些把演算法排序之類的搞得異常麻煩的人, 盡可能簡單一點, 簡單了, 容易理解了, 才好記, 上了戰場, 才用得著.
//人家的不好用, 只好自己總結, 重寫原理與過程.^_^
//口訣:
//冒泡: 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(); } }
三種常見的排序演算法
剛開始的時候也聽過學長說什麼什麼排序之類的,到剛聽得時候是各種姿勢懵逼啊,學習了一段時間的c語言之後,才有點明白所謂的排序是什麼,現在就來羅列一下三種常用的排序法氣泡排序法,插入排序法和選擇排序法。氣泡排序啊,這是我聽過最多的乙個排序方法了,他的基本思想也比較簡單,就是不斷比較相鄰的兩個數,讓較小的...
常見的三種排序演算法
常見的三種排序演算法 氣泡排序,選擇排序,插入排序 氣泡排序 穩定 重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。兩兩比較 intmain for i 0 i1 i 決定裡面的迴圈迴...
排序 常見三種 C 實現
簡單總結下堆排序的基本思路 a.將無序序列構建成乙個堆,根據公升序降序需求選擇大頂堆或小頂堆 b.將堆頂元素與末尾元素交換,將最大元素 沉 到陣列末端 c.重新調整結構,使其滿足堆定義,然後繼續交換堆頂元素與當前末尾元素,反覆執行調整 交換步驟,直到整個序列有序。其中建堆的時間複雜度為o n 而排序...