氣泡排序,選擇排序,快速排序
阿新 • • 發佈:2019-01-09
1.氣泡排序
氣泡排序(Bubble Sort) 最為簡單的一種排序,通過重複走完陣列的所有元素,通過打擂臺的方式兩個兩個比較,直到沒有數可以交換的時候結束這個數,再到下個數,直到整個陣列排好順序。因一個個浮出所以叫氣泡排序。雙重迴圈時間O(n^2)void BubbleSort ( int arr[] , int a ){ //氣泡排序演算法 if(arr==NULL||a<=0) { return ; } int temp; for(int i=0; i< a; i++ ) for(int j=i+1; j<a; j++) if(arr[i]>arr[j]){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } print(arr,a); }
2.選擇排序
選擇排序(Select Sort) 是直觀的排序,通過確定一個Key最大或最小值,再從帶排序的的數中找出最大或最小的交換到對應位置。再選擇次之。雙重迴圈時間複雜度為O(n^2)void SelectSort( int arr[], int a){ // 選擇排序 if(arr==NULL||a<=0) { return ; } for( int i=0; i<a; i++){ int MinKey= arr[i]; for(int j=i ; j<a; j++){ if(MinKey>arr[j]){ int temp= arr[j]; arr[j]=MinKey; MinKey=temp; } } arr[i]=MinKey; } print(arr,a); }
3.快速排序
int compInc(const void *a, const void *b) //快排遞增
{
return *(int *)a - *(int *)b;
}
int compDec(const void *a, const void *b) //快排遞減
{
return *(int *)b - *(int *)a;
}
通過使用qsort(陣列名,長度,sizeof(第一個數長度),compInc/comoDec) 進行實現陣列的排序
~~~~~~~~~~~~
其他排序會根據學的增加進行補充
~~~~~~~~~~~
#include<iostream> #include<cstdlib> using namespace std; void print(int arr[], int a){ for (int i=0; i<a ; i++ ) cout << arr[i] << " "; cout <<endl; } int compInc(const void *a, const void *b) //快排遞增 { return *(int *)a - *(int *)b; } int compDec(const void *a, const void *b) //快排遞減 { return *(int *)b - *(int *)a; } void BubbleSort ( int arr[] , int a ){ //氣泡排序演算法 if(arr==NULL||a<=0) { return ; } int temp; for(int i=0; i< a; i++ ) for(int j=i+1; j<a; j++) if(arr[i]>arr[j]){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } print(arr,a); } void SelectSort( int arr[], int a){ // 選擇排序 if(arr==NULL||a<=0) { return ; } for( int i=0; i<a; i++){ int MinKey= arr[i]; for(int j=i ; j<a; j++){ if(MinKey>arr[j]){ int temp= arr[j]; arr[j]=MinKey; MinKey=temp; } } arr[i]=MinKey; } print(arr,a); } int main() { int arr[10]; for(int i=0; i<10; i++ ) cin >>arr[i]; cout << endl; BubbleSort(arr,10); cout << endl; cout << endl; SelectSort(arr,10); cout << endl; cout << endl; qsort(arr,10,sizeof(arr[0]),compInc); print(arr,10); qsort(arr,10,sizeof(arr[0]),compDec); print(arr,10); return 0; }