這裡介紹三種常用的排序演算法:氣泡排序、選擇排序、插入排序。
1.氣泡排序
氣泡排序是一種簡單的排序,它通過元素的兩兩比較,不斷的將大的或小的元素向左或向右移動,通過這種方式來實現排序。
如下面是實現由小到大的排序:外層迴圈out一開始為nelems-1,這代表元素的最大位置。內層迴圈從位置0和位置1的元素開始通過不斷比較將較大的值放到較大的位置。當內層迴圈完畢後,a[nelems-1]就為最大值了。
//.............氣泡排序..............
public
void
bubblesort()}}
}
2.選擇排序
選擇排序是比冒泡複雜一點的排序,它是先選取乙個位置,然後和其他位置的值不斷比較,如果滿足要求(比其他位置大或小),就交換著兩個位置的值。
如下同樣實現了由小到大的排序方式:選取陣列的第out個位置賦值給中間變數min,通過內層迴圈不斷與剩下的陣列元素比較,將較小值的位置賦值給min,這樣在內層迴圈完成後位置min代表的數值一定是最小值。然後交換被選擇的位置out的值和最小值min位置的值。
//.............選擇排序..................
public
void
selectsort()
}swap(out, min);
//交換位置
} }
3.插入排序
插入排序是最難理解的排序方式,同時也是最多使用的排序方式。原理是由左向右依次選擇元素來作為用於插入的值,來通過和左邊的資料比較來得到自己的插入位置。這個解釋比較麻煩,我怕解釋不好,大家直接看**理解吧。
//...............插入排序..........................
public
void
insertsort()
a[in] = temp; //
a【in-1]}
}
演算法之簡單排序
示例 氣泡排序 複雜度 比較次數 n n 1 2 o n的平方 移動次數 平均移動 n的平方 4 所以複雜度也為n n 1 2 o n的平方 public void bubblesort inttemp for int i 0 i for int i 0 i 列印 for int i 0 i 選擇排...
排序演算法之簡單排序
進入找工作倒計時狀態了,計畫好好複習一下資料結構和相關演算法,估計用兩天時間把見過的排序演算法整理下,首先看一下時間複雜度為o n2 的演算法。首先參考大話資料結構定義乙個鍊錶類 include define maxsize 1000 using namespace std class sqlist...
JS 排序演算法之簡單排序
目錄 function bubblesort ary 如果沒有發生交換 表明排序完成 直接退出排序 if exchange break return ary 效果示例 function straightinsertionsort ary while j 0 temp ary j 找到temp需要插入...