常見的幾種陣列排序的演算法

2021-10-10 14:49:29 字數 2568 閱讀 5860

int

arrs =

;

思路:

i :i每次迴圈,都會確定陣列中最後一位元素是陣列中最小的元素

j : 每次迴圈,陣列都會從下標為j的元素與下標為j+1的元素進行比較,如果小於,則調換兩者的位置,依次向下進行判斷,直到確定陣列最後一位元素為最小的元素。

for

(int i =

0; i < arrs.length -

1; i++)}

} system.out.

println

(arrays.

tostring

(arrs)

);

思路:

i:i 每次迴圈陣列下標i元素都會與陣列其他的所有元素進行比較,並確定陣列i下標元素比較其i下標後面的元素,為最大元素

j = i + 1:i 每次迴圈,都會與i+1進行比較,並確定i 元素大於 i+1元素

for

(int i =

0; i < arrs.length -

1; i++)}

} system.out.

println

(arrays.

tostring

(arrs)

);

思路:

把陣列開始下標元素當做以排序元素,從第二個元素開始進行排序。

排序步驟: 將排序元素依次與前乙個元素進行比較,如果小於前乙個元素(適合)則直接插入當前下標位置,如果不適合,則將上乙個元素向後移動一位,然後繼續判斷與後面的元素是否滿足,不適合則前面的元素繼續先後移動一位,繼續之前的操作,直到找到合適的位置,將排序的元素插入。

for

(int i =

1;i < arrs.length; i++

) arrs[j +1]

= x;

// 將排序元素插入適合的位置

}system.out.

println

(arrays.

tostring

(arrs)

);

思路:

兩路歸併演算法,兩個排好序的子串行合併為乙個子串行 (分治演算法)

歸併排序是一種概念上最簡單的排序演算法,與快速排序一樣,歸併排序也是基於分治法的。歸併排序將待排序的元素序列分成兩個長度相等的子串行,為每乙個子串行排序,然後再將他們合併成乙個子串行。合併兩個子串行的過程也就是兩路歸併。

public

static

void

main

(string[

] args)

private

static

void

mergesort

(int

arrs,

int startindex,

int endindex)

}private

static

void

merge

(int

arrs,

int left,

int mid,

int right)

while

(p1 <= mid) tmp[k++

]= arrs[p1++];

//如果第乙個序列未檢測完,直接將後面所有元素加到合併的序列中

while

(p2 <= right) tmp[k++

]= arrs[p2++];

//如果第二個序列未檢測完,直接將後面所有元素加到合併的序列中

//複製回原陣列

for(

int i = left; i <= right; i++

)}

二分查詢演算法:前提陣列必須是排序後的陣列

思路:

arrays.

sort

(arrs)

;// 將陣列進行排序 公升序

system.out.

println

("排序後的陣列attr="

+ arrays.

tostring

(arrs));

int num =14;

// 查詢陣列中為14的元素

int left =0;

// 開始下標

int right = arrs.length;

// 結束下標

int index;

// 查詢條件匹配的下標

while

(true

)else

if(arrs[mid]

> num)

else

if(arrs[mid]

< num)

} system.out.

println

(arrs[index]

);

陣列排序常見的幾種演算法

氣泡排序的基本思想就是對比相鄰的元素值,如果滿足條件就交換元素值,把小的放前面,把大的放後面。其演算法由兩層迴圈實現,外層迴圈控制排序次數,一般為排序的陣列的長度減1,內層迴圈主要用於比較相鄰元素的大小,以判斷是否交換位置。內層的對比次數隨著外層排序的次數的增加而減少。如下 public class...

幾種常見的排序演算法

氣泡排序演算法的運作如下 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要...

幾種常見的排序演算法

1.氣泡排序 void bubble sort int array,int n if 1 flag break printf d i return 2.快速排序 好 void quicksort int a,int left,int right left是選擇的軸點,如0,表示這個資料為軸點,rig...