排序演算法是最基礎,也是最簡單的演算法思想,因為應用場景多,書寫簡單,所以應用較為普遍,所以在面試和考試的時候,都會涉及到排序演算法,雖然排序演算法種類很多,但是只要理解了思想,然後靈活運用,那麼就不難記憶.
排序演算法兩個需要記憶和理解的點就是:演算法思想和時間複雜度.下面我們就介紹和分析一下常見的幾種排序演算法
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,僅僅用原生的方法把他寫出來。雖然看起來沒什麼意思,但是這也是考察乙個人的基礎有沒有紮實 程式設計思想好不好的一種方法。重要的事情說三遍 主要理解快速排序!主要理解快速排序!主要理解快速排...