一些常見的排序演算法

2021-10-07 19:19:22 字數 2995 閱讀 6593

複雜度為n^2的排序//

//常見的有:插入排序、氣泡排序、選擇排序(地精排序,是插入排序的另一種寫法,可以只用乙個迴圈)

public

static

int[

]charu

(int

ins)

else}}

return ins;

}public

static

int(

int[

] in)}}

return in;

}public

static

int[

]dijing

(int

in)

else

}return in;

}public

static

int[

]xuanze

(int

in)

}//將當前的數字與陣列後面最小的數字進行交換

int turn=in[i]

; in[i]

=in[loss]

; in[loss]

=turn;

}return in;

}複雜度為n^2的排序//

複雜度為nlogn的排序//

//常用演算法有:歸併排序、快速排序、堆排序

//--------------------------------歸併排序--------------------------------------------

public

static

void

guibing

(int

nums,

int low,

int mid,

int high)

else

}// 把左邊剩餘的數移入陣列

while

(i <= mid)

// 把右邊邊剩餘的數移入陣列

while

(j <= high)

// 把新陣列中的數覆蓋nums陣列

for(

int k2 =

0; k2 < temp.length; k2++)}

public

static

void

guibingpaixu

(int

nums,

int low,

int high)

}//--------------------------------歸併排序--------------------------------------------

//--------------------------------快速排序--------------------------------------------

//目前時間複雜度最低的排序方法

public

static

void

kuaisupaixu

(int

arr,

int low,

int high)

int zhong=

zhongzhou

(arr, low, high)

;kuaisupaixu

(arr,low, zhong-1)

;kuaisupaixu

(arr,zhong+

1, high);}

public

static

intzhongzhou

(int

arr,

int low,

int high)

arr[low]

=arr[high]

;//左指標發現當前下標對應的值比參考值大,所以將這個值放到中心值的右邊。

//當左指標交替完後,移動右指標

while

(arr[low]

<=zhongzouzhi && lowarr[high]

=arr[low]

;//右指標發現當前下標對應的值比參考值小,則將這個值放到中心值的左邊

//當右指標交替完後,移動左指標

//直至左右指標在同一位置

} arr[low]

=zhongzouzhi;

return low;

}//--------------------------------快速排序--------------------------------------------

複雜度為nlogn的排序//

public

static

void

tongpaixu

(int

in)

else

} max=in[max]

; min=in[min]

;int

tong=

newint

[max-min+1]

;for

(int j=

0;j)for

(int ss=

0;ss}public

static

void

radixsort

(int

arr)

}//獲得最大數的位數

int maxlegth=

(maxnum+"")

.length()

;for

(int n=

10;n<=maxlegth*

10;n+=10)

int index=0;

//原陣列更新到第幾個數字

//按照桶中的順序,依次將資料取出放回原來的陣列。

for(

int j=

0;j//取出後記得清零

tongnum[j]=0

;}} system.out.

println

(arrays.

tostring

(arr));

}

一些常見的排序演算法

為了便於說明,假設是公升序排列,降序容易以此推斷 1 選擇排序 查詢數列 含n個數 中的最大項並把它與最後一項交換,然後查詢數列前n 1項中的最大項,並把它與這n 1項的最後一項交換,以此類推。2 氣泡排序 比較相鄰的兩項資料,如果次序顛倒則交換之,最多需要比較n 1趟。第一趟結束,最大項已經到末尾...

常見的一些演算法

1.判斷乙個數是否為素數 質數 判斷乙個數是否為素數 method1 bool judgeprime int number std cout number return true 判斷乙個數是否為素數 method2 bool judgeprime2 int number std cout numb...

用PHP實現一些常見的排序演算法

1 氣泡排序 兩兩相比,每迴圈一輪就不用再比較最後乙個元素了,因為最後乙個元素已經是最大或者最小。function maopaosort list return list 2 選擇排序 選定乙個作為基本值,剩下的和這個比較,然後調換位置。function xuanzesort list if pos...