常用排序演算法

2021-04-08 22:57:58 字數 1734 閱讀 5837

一、簡單排序演算法

由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行**,並在我的vc環境

下執行通過。因為沒有涉及mfc和windows的內容,所以在borland c++的平台上應該也不會有什麼

問題的。在**的後面給出了執行過程示意,希望對理解有幫助。

1.冒泡法:

這是最原始,也是眾所周知的最慢的演算法了。他的名字的由來因為它的工作看來象是冒泡:

#include

void bubblesort(int* pdata,int count)

}while(i<=j);//如果兩邊掃瞄的下標交錯,就停止(完成一次)

//當左邊部分有值(lefti),遞迴右半邊

if(right>i)

run(pdata,i,right);

} void quicksort(int* pdata,int count)

void main()

; quicksort(data,7);

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

cout<

void bubble2sort(int* pdata,int count)

pdata[w+k] = itemp;

} }

} void main()

; shellsort(data,12);

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

cout<(cmydata& data );

private:

char* m_strdatamember;

int m_idatasize;

}; mydata.cpp檔案

cmydata::cmydata():

m_iindex(0),

m_idatasize(0),

m_strdatamember(null)

cmydata::~cmydata()

cmydata::cmydata(int index,char* strdata):

m_iindex(index),

m_idatasize(0),

m_strdatamember(null)

cmydata& cmydata::operator =(cmydata &srcdata)

bool cmydata::operator <(cmydata& data )

///

// //主程式部分

#include

#include "mydata.h"

template

void run(t* pdata,int left,int right)

}while(i<=j);//如果兩邊掃瞄的下標交錯,就停止(完成一次)

//當左邊部分有值(lefti),遞迴右半邊

if(right>i)

run(pdata,i,right);

} template

void quicksort(t* pdata,int count)

void main()

; quicksort(data,8);

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

cout<

cout<<"/n";

常用排序演算法

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

常用排序演算法

排序演算法 最好時間 平均時間 最壞時間 輔助空間 穩定性 直接插入排序 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 ...

常用排序演算法

每次從尚未排好的陣列範圍裡選出乙個最小的放到正確的位置。void selection sort int array,int size swap array,lhs,min 從陣列裡選出乙個基準元素,通過交換位置讓它前面的元素都比它小 後面的元素都比它大,最後分而治之。void quicksort i...