C 排序(冒泡 選擇 插入 桶 歸併 快速)

2021-10-02 15:46:30 字數 4492 閱讀 8117

4. ide clion

5.涉及排序 希爾排序(沒有完成) 氣泡排序 桶排序 選擇排序 快速排序 歸併排序 插入排序 外加康托展開演算法

完成且可用的排序

氣泡排序

選擇排序

插入排序

桶排序歸併排序

快速排序

外加輔助的函式

7. 確定序列是有序的

8. 自動輸入和輸出

乙個標頭檔案

乙個cpp

乙個main

乙個類 乙個main

#ifndef opp_csort_csort_h

#define opp_csort_csort_h

class csort ;

bool cantor(int arr,int n);

bool isdeterministic(int arr,int n);

public:

void manualinput(int arr,int n);

void autoinput(int arr,int n);

void autoout(int arr,int n);

void bubble(int arr,int n);//氣泡排序

void selection(int arr,int n);//選擇排序

void shell(int arr,int n);//希爾排序

void insertion(int arr,int n);//插入排序

void merge(int arr,int l,int r);//歸併排序

void quick(int arr,int l,int r);//快速排序

void bucket(int arr,int n);//桶排序

void deterministicsequence(int arr,int n);//確定序列是排好的序列

void testbubble(int arr,int n);

void testselection(int arr,int n);

void testshell(int arr,int n);

void testinsertion(int arr,int n);

void testmerge(int arr,int n);

void testquick(int arr,int n);

void testbucket(int arr,int n);

};#endif //opp_csort_csort_h

#include #include "csort.h"

using namespace std;

void csort::manualinput(int *arr, int n)

void csort::autoinput(int *arr, int n)

}}void csort::testbubble(int arr,int n)

void csort::selection(int *arr, int n) }}

}void csort::testselection(int *arr, int n)

void csort::deterministicsequence(int *arr, int n)

bool csort::cantor(int arr,int n)

}res+=con*factory[n-i-1];//被選中的數後面還有幾個數的全排列

}if(res==0) return 1;

else return 0;

}void csort::shell(int *arr, int n)

t++;tt++;

}}void csort::testbucket(int *arr, int n)

void csort::quick(int *arr, int l,int r)

int csort::part(int *arr, int l, int r)

int t;

t=arr[l];

arr[l]=arr[j];

arr[j]=t;

return j;//切分位置 就是中心位置

}void csort::testquick(int *arr, int n)

void csort::merge(int *arr, int l,int r)

void csort::mergeaux(int *arr, int l,int mid, int r)

}void csort::testmerge(int *arr, int n)

#include #include "csort.h"

#include int main()

ctime標頭檔案主要用到類clock_t

用來測試**執行的時間 單位是ms

void csort::bubble(int *arr, int n) 

}}void csort::testbubble(int arr,int n)

函式的宣告都在csort類裡面 也就是標頭檔案裡面

第二個函式主要是用來測試這個演算法

下面幾個排序都是這個道理

void csort::selection(int *arr, int n) }}

}void csort::testselection(int *arr, int n)

void csort::bucket(int *arr, int n) 

t++;tt++;

}}void csort::testbucket(int *arr, int n)

void csort::quick(int *arr, int l,int r) 

int csort::part(int *arr, int l, int r)

int t;

t=arr[l];

arr[l]=arr[j];

arr[j]=t;

return j;//切分位置 就是中心位置

}void csort::testquick(int *arr, int n)

void csort::merge(int *arr, int l,int r) 

void csort::mergeaux(int *arr, int l,int mid, int r)

}void csort::testmerge(int *arr, int n)

void csort::manualinput(int *arr, int n) 

void csort::autoinput(int *arr, int n)

手動輸入

自動輸入

自動輸出

判斷序列是否有序 沒有返回值

判斷序列是否有序 有返回值 (但是我把他沒有public)

bool csort::cantor(int arr,int n)

}res+=con*factory[n-i-1];//被選中的數後面還有幾個數的全排列

}if(res==0) return 1;

else return 0;

}

唯一乙個講的 因為是我自己在剛開始學程式設計的時候想的第二個排序

第乙個是冒泡 只有這兩個是在沒有看書的情況下 完全自主的想出來的』

**

void csort::bucket(int *arr, int n) 

t++;tt++;

}}void csort::testbucket(int *arr, int n)

桶排序的優點 演算法複雜度是o(n)

缺點 只能是整形變數

運用了陣列值和下標的轉換 所以只能是整形變數 很大的缺點

範圍-int的範圍到+int的範圍 應該是這個

初代的桶排序 (自己第一次想出來的)

只能是正數 和 0 很大的侷限

但是 後來想想 0當做了座標原點 但是座標是可以移動的 如果把座標原點放到陣列的** 豈不美哉

於是 算出陣列中間的位置 即為變數mid 但是就算是知道了中間的位置 陣列到底要多大 我們不知道 這裡不想用動態陣列 那咋整

於是 算出陣列的最大和最小 最大-最小 當做陣列的大小 保證接受陣列的時候陣列足夠大 沒保證避免不必要的空間 這樣就能夠比較靈活的使用了

但是還是有乙個缺點 假設最大100 最小-100 陣列就兩個數 我們卻得到了200的大小 陣列的 浪費了很大空間 於是乎我們 我們需要其他函式的幫住

在 算出兩中演算法在問題規模為n的時候演算法複雜度的函式影象都交點

那麼n小使用前者演算法 大的時候使用後者演算法 就起到了很好的轉換作用

更好的優化演算法

大致就是這樣子

演算法看**都能懂得

就不多說了額

全文至此共7947個字

排序 冒泡 插入 桶 快速 歸併

氣泡排序 includeusing namespace std int a void printarr int a,int length if flag break printarr a,length return 0 應用習題 車廂重組 在乙個舊式的火車站旁邊有一座橋,其橋面可以繞河中心的橋墩水平...

排序(冒泡 選擇 插入 快速 歸併)

今天把之前寫的排序整理了一下,之前寫的有點亂,現在把這些整合在一起,後續在接觸到別的排序演算法會繼續在這篇博文上新增。排序演算法一 氣泡排序public static void bubblesort for int i 0 iarray j 1 for int tem array 排序演算法二 選擇...

排序 冒泡 插入 選擇 快速 歸併

public class sorttest bubblesort array insertsort array selectsort array quicksort array mergesort array for int i 0 i array.length i 氣泡排序 param array...