10種排序演算法,沒有實踐

2021-06-03 19:37:59 字數 2482 閱讀 8745

1.氣泡排序

2.選擇排序

3.插入排序

4.交換排序

5.歸併排序

6.快速排序

7.希爾排序

8.堆排序

9.雙向氣泡排序

10.計數排序

排序演算法是一種基本並且常用的演算法。由於實際工作中處理的數量巨大,所以排序演算法

對演算法本身的速度要求很高。

而一般我們所謂的演算法的效能主要是指演算法的複雜度,一般用o方法來表示。在後面我將

給出詳細的說明。

對於排序的演算法我想先做一點簡單的介紹,也是給這篇文章理乙個提綱。

我將按照演算法的複雜度,從簡單到難來分析演算法。

第一部分是簡單排序演算法,後面你將看到他們的共同點是演算法複雜度為o(n*n)(因為沒有

使用word,所以無法打出上標和下標)。

第二部分是高階排序演算法,複雜度為o(log2(n))。這裡我們只介紹一種演算法。另外還有幾種

演算法因為涉及樹與堆的概念,所以這裡不於討論。

第三部分類似動腦筋。這裡的兩種演算法並不是最好的(甚至有最慢的),但是演算法本身比較

奇特,值得參考(程式設計的角度)。同時也可以讓我們從另外的角度來認識這個問題。

第四部分是我送給大家的乙個餐後的甜點——乙個基於模板的通用快速排序。由於是模板函式

可以對任何資料型別排序(抱歉,裡面使用了一些論壇專家的呢稱)。

現在,讓我們開始吧:

一、簡單排序演算法

由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行**,並在我的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] = ite

mp;

}

}

}

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

}

10種排序演算法總結

排序演算法有很多,所以在特定情景中使用哪一種演算法很重要。為了選擇合適的演算法,可以按照建議的順序考慮以下標準 1 執行時間 2 儲存空間 3 程式設計 工作 對於資料量較小的情形,1 2 差別不大,主要考慮 3 而對於資料量大的,1 為首要。主要排序法有 一 冒泡 bubble 排序 相鄰交換 二...

排序演算法實踐

那天閱讀 之美 這本書的章節,寫個程式試試其中的排序演算法的例子,執行成功後,突然想試試和vc9自帶的 stl sort函式比較一下,測試結果出乎我所料,這個例子比stl 的sort函式一般快上3 4倍之多,覺得很是奇怪,檢查了一下,發現應該是debug版的原因,切換到release版再測,對於小資...

排序演算法實踐

輸入有兩行,第一行是乙個正整數,表示有n個同學參與調查 n 第二行有 個用空格隔開的正整數,為每本圖書的 號 假設圖書的isbn號在 1 1000之間 輸出有兩行,第一行是乙個正整數k,表示需要買多少本書。第二行是k個用空格隔開的正整數,為從小到大已排序的需要購買的圖書的isbn號。先排序,再去重。...