基本的幾個排序演算法

2022-02-20 11:03:02 字數 2754 閱讀 4043

///

///氣泡排序 第一次迴圈完畢,最小的在最上面。逐步處理

//////

public

sealed

class

bubble

<

t>

where

t : icomparable}if

(!exchange)}}

}

//////

選擇排序

//////

public

sealed

class

select

<

t>

where

t : icomparable}}

}}

//////

插入排序

///演算法思想簡單描述:

///每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子列表當中的適當位置,直到全部記錄插入完成為止。

///對直接插入排序我的理解就是:先將第乙個記錄視為乙個有序序列,然後依次將後面的記錄插入到這個有序序列中來。

///每次要插入的記錄時,須從後往前依次比較有序序列中的記錄,直到找到在有序序列中的位置,記錄下該位置,該位置開始的每個記錄都後移一位

///然後將插入記錄插入該位置。這樣每插入乙個記錄進去,有序序列長度加1,剩餘記錄減1,直到所有記錄都插入到有序序列中,排序完成

//////

public

sealed

class

insert

<

t>

where

t : icomparable次"

,i);

t temp

=array[i];

intj =i;

//內層迴圈,在有序序列中從後往前比較,找到待排序記錄在有序列中位置(位置空出)

for(j =i

-1; j

>=0&&

temp.compareto(array[j])

<

0; j--)

//將臨時變數中的值放入正確位置,即空出的位置

array[j +1

] =temp;}}

}

///

///希爾排序

///演算法思想簡單描述:

///在直接插入排序演算法中,每次插入乙個數,使有序序列只增加1個節點, 並且對插入下乙個數沒有提供任何幫助。

///如果比較相隔較遠距離(稱為 增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。

/於2023年在以他名字命名的排序演算法中實現了這一思想。演算法先將要排序的一組數按某個增量d分成若干組,

///每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用乙個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成。

///下面的函式是乙個希爾排序演算法的乙個實現,初次取序列的一半為增量,以後每次減半,直到增量為1。希爾排序是不穩定的

//////

public

class

shell

<

t>

where

t : icomparable}}

}}}}

///

///快速排序(quicksort)是對氣泡排序的一種改進。由c. a. r. hoare在2023年提出。

///它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,

///然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

///設要排序的陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用第乙個資料)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。

///一趟快速排序的演算法是:   

///1)設定兩個變數i、j,排序開始的時候:i=0,j=n-1;   

///2)以第乙個陣列元素作為關鍵資料,賦值給key,即 key=a[0];  

///3)從j開始向前搜尋,即由後開始向前搜尋(j=j-1),找到第乙個小於key的值a[j],並與a[i]交換;   

///4)從i開始向後搜尋,即由前開始向後搜尋(i=i+1),找到第乙個大於key的a[i],與a[j]交換;   

///5)重複第3、4、5步,直到 i=j; (3,4步是在程式中沒找到時候j=j-1,i=i+1。找到並交換的時候i, j指標位置不變。另外當i=j這過程一定正好是i+或j+完成的最後另迴圈結束)

//////

public

class

quick

<

t>

where

t : icomparable

}private

static

intswap(t array,

intnlower,

intnupper)

}///

以intarray[nright]為新支點

nswap

=array[nlower];

array[nlower]

=array[nright];

array[nright]

=nswap;

return

nright;}}

使用PHP實現幾個基本的排序演算法

近幾日有空,發現自己對一些基本的排序演算法已經忘記,遂使用php來實現,複習一下。和注釋如下 class class sort echo self array2string data i.echo 直接選擇排序結束 改良的直接選擇排序 public static function directsel...

幾個排序演算法

to change this license header,choose license headers in project properties.to change this template file,choose tools templates and open the template i...

幾個簡單的排序演算法

排序演算法 include using namespace std void insertsort int r,int n 直接插入 void shellsort int r,int n shell排序 void selectsort int r,int n 直接選擇排序 void bubbleso...