常用排序演算法

2021-09-21 02:20:53 字數 1956 閱讀 4022

演算法分析

實現

//*****====快排演算法*****====

//使得arr[low]..arr[q-1]中的每乙個元素都小於等於arr[q], arr[q]也小於等於arr[q+1]..arr[high]。

//簡而言之,讓左邊的數字都小於右邊的數字

//最壞時間複雜度:n^2 , 平均時間複雜度:n*lg(n)

//優化:為了使得輸入均勻的分布,對輸入使用隨機數

//排序乙個陣列,初始呼叫qsort(a,0,a.size()-1).

//*************************

int partirtion(int a,int low,int high)

}//將主元(pivot)給到i的下乙個

int temp = a[i+1];

a[i+1] = a[high];

a[high] = temp;

return i+1;

}void qsort(int arr, int low, int high)

}

演算法分析

實現

//**********===插入排序**********

//從插入的位置起步,往前作比較,輸入n指長度

//******************************=

void insertsort(int a,int n)

//j+1就是需要插入的位置

a[j + 1] = key;

}}

演算法分析

實現

//**********=歸併排序**********

//merge就是合併的過程,相當於在兩堆排好序的牌中,每次選取最上面的兩張進行比較,選取其中較小的一張

//a是陣列,p<=q演算法分析

實現//**********=計數排序**********====

//函式輸入為:input輸入陣列、n是輸入和輸出陣列的長度、k是陣列中的最大數

//******************************==

void countsort(int input, int n, int k)

//記錄輸入有多少個當前counter下標的值

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

//對每乙個下標記錄與之前的求和,求和的結果就是下標在輸出陣列的位置

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

//通過計數器定址,對輸出賦值

for(int i = n-1;i >=0;i--)

//將輸出給輸入

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

}

演算法分析

實現

//*****====基數排序***************

//先求出所有數中最大數字的位數

//再根據鍵值的每一位數字,來分配乙個桶

//******************************=

int maxbit(int data, int n) //輔助函式,求資料的最大位數

int d = 1;

int p = 10;

while (maxdata >= p)

return d;

}void radixsort(int data, int n) //基數排序

for(j = 1; j < 10; j++)

count[j] = count[j - 1] + count[j]; //將tmp中的位置依次分配給每個桶

for(j = n - 1; j >= 0; j--) //將所有桶中記錄依次收集到tmp中

for(j = 0; j < n; j++)

radix = radix * 10;

}delete tmp;

delete count;

}

常用排序演算法

筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 l有時候應用程式本身需要對資訊進行排序,如為了準備客戶賬目,銀行需要對支票賬號進行排序 l很多演算法將排序作為...

常用排序演算法

一 簡單排序演算法 由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行 並在我的vc環境 下執行通過。因為沒有涉及mfc和windows的內容,所以在borland c 的平台上應該也不會有什麼 問題的。在 的後面給出了執行過程示意,希望對理解有幫助。1.冒泡法 這是最原始,也是眾所...

常用排序演算法

排序演算法 最好時間 平均時間 最壞時間 輔助空間 穩定性 直接插入排序 o n o n 2 o n 2 o 1 穩定 希爾排序 o n 1.3 o 1 不穩定 直接選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 堆排序 o n x lbn o n x lbn o n x lbn o ...