排序演算法在很多面試中都會涉及到,而且還分為很多種,看得眼花繚亂的,這兒我就先說說幾個較簡單的演算法的實現;
本來是想把各種排序方法寫在乙個函式裡可供選擇使用的,但是想著還是把每種演算法直觀的說清楚最好,故分開實現。
1、插入排序:
插入排序可以聯想到玩撲克牌,當你手上有若干張排好序的牌,又拿起一張新的牌,這時候我們的大腦裡是怎麼想的呢?
假設從右邊開始,我們會先和第一張比較,看位置合適不,不合適再和第二張比較,依次比較,直到找到合適的位置,
不過具體到我們這兒的插入排序,有個不同點就是要移動元素的位置。
#include using namespace std;
#define n 5
int main(void);
cout<<"請輸入"<>a[j++];
for(i=1;i=0;j--)//把當前位置的數插入到前面已排好資料中
; cout<<"請輸入"<>a[j++];
for(i=0;ia[j])
}} for(i=0;i3、快速排序:
4、氣泡排序:
氣泡排序就是從第乙個數開始,兩兩比較,把大的交換到後面,這樣一趟比較下來,最大的數就冒到最後乙個位置上去了;在比較第二趟,不過這次要排除最後乙個元素,以此類推,這個還是很好理解的。
#include using namespace std;
#define n 5
int main(void);
cout<<"請輸入"<>a[j++];
for(i=0;ia[j+1])
}//對冒泡的乙個小小改進,當一趟比較都沒有發生資料交換時,
//說明排序已經完成
if(flag_down)
break;
} for(i=0;i5、二分排序:
各種排序演算法的實現
各種排序演算法的實現 1.快速排序 void swap int a,int b int partion int a,int p,int r a p a j a j x return j void quick sort int a,int p,int r a s rc heap adjust void...
各種排序演算法的實現
排序演算法總結 關於演算法的不穩定性不是很理解,需要進一步加強。很形象 int a n int b n int c n 插入排序 void insert sort int arr arr j 1 key 將key移動到前邊沒有比key大的值得位置上 print arr arr 6 9 2 1 69 ...
各種排序演算法的實現
用隨機函式生成16個2位正整數 10 99 實現插入排序 選擇排序 氣泡排序 雙向冒泡 快速排序 二路歸併排序等多種排序演算法,輸出排序中間過程 統計關鍵字的比較次數和記錄的移動次數。用隨機函式生成16個2位正整數 10 99 實現插入排序 選擇排序 氣泡排序 雙向冒泡 快速排序 二路歸併排序等多種...