常見的排序演算法

2021-07-28 23:00:53 字數 1992 閱讀 4394

排序演算法是最基礎,也是最簡單的演算法思想,因為應用場景多,書寫簡單,所以應用較為普遍,所以在面試和考試的時候,都會涉及到排序演算法,雖然排序演算法種類很多,但是只要理解了思想,然後靈活運用,那麼就不難記憶.

排序演算法兩個需要記憶和理解的點就是:演算法思想和時間複雜度.下面我們就介紹和分析一下常見的幾種排序演算法

int num[10] = ;

int n = 10;

for(int i = 0; i < n; i++)}}

for(int i = 0; i < n; i++)

int num[10] = ;

int n = 10;

for(int i = 0; i < n; i++)

}int temp = num[minnumindex];

num[minnumindex] = num[i];

num[i] = temp;

}for(int i = 0; i < n; i++)

int num[10] = ;

int n = 10;

for(int i = 0; i < n; i++)

num[j] = temp;

}for(int i = 0; i < n; i++)

int swaparray(int left, int right)

num[left] = temp;

//返回我們所設定的相對點變換後位置

return left;

}void quicksort(int left, int right)

int

len = n / 2;

while(len)

num[k] = temp;}}

len /= 2;

}for(int i = 0 ;i < n;i++)

void merge(int

left, int

right) else

}while(i <= mid) temp[len++] = num[i++];

while(j <= right) temp[len++] = num[j++];

for(int i = 0; i < len ;i++)

}void sort(int

left, int

right)

計數排序應該是這些排序演算法中思想最簡單的乙個演算法了,我們定義乙個計數陣列來儲存乙個數出現的頻率,例如:如果17出現了2次,那麼cnt[17] = 2,然後我們根據這些數所在的大致範圍來進行掃瞄,乙個乙個的塞到陣列中即可

int cnt[maxn] = ;

int minleft = maxn + 10;

int maxright = -1;

for(int i = 0; i < n;i++)

int k = 0;

for(int i = minleft; i <= maxright ;i++)

}for(int i = 0 ;i < n;i++)

int getnum(int x)

return cnt;

}int pow(int x)

return ans;

}void sort()

}int temp[10][20];//temp[i][j]表示當前位為i的第j個數

int cnt[10] = ;//表示當前位為i的數的個數

for(int i = 1; i <= maxloc; i++)

int len = 0;

//取出數

for(int j = 0 ;j < 10; j++)

cnt[j] = 0;}}

}

那麼就先說到這裡啦,有不足以後會補充

歡迎來到我的部落格,我是anicoo1,我喂自己袋鹽

常見的排序演算法

一 氣泡排序 include include void swap int a,int b void bubblesort int arr,int size int main void bubblesort a,5 for int i 0 i 5 i cout 二 選擇排序 void selectio...

常見的排序演算法

需要包含的標頭檔案 include stdafx.h include include include 氣泡排序是穩定排序 時間複雜度 o n 2 void swap int a,int b void bubblesort int a,int n void printnum int a,int n a...

常見的排序演算法

相信大家面試的時候都要經歷手寫什麼什麼排序這種事情吧,要不就是大概說一下思路。不許用各種語言封裝好的函式 api,僅僅用原生的方法把他寫出來。雖然看起來沒什麼意思,但是這也是考察乙個人的基礎有沒有紮實 程式設計思想好不好的一種方法。重要的事情說三遍 主要理解快速排序!主要理解快速排序!主要理解快速排...