各種常見排序演算法

2021-08-18 16:47:35 字數 2131 閱讀 5023

//選擇排序

private

static

int[

]selectsort

(int a)

}}return a;

}//氣泡排序

private

static

int[

]bubblesort

(int

a)}}

return a;

}//希爾排序

private

static

int[

]shellsort

(int a)

while

(h>=1)

h/=3;

}}return a;

}//插入排序

private

static

int[

]insertsort

(int

a)}return a;

}//快速排序

public

static

void

quicksort

(int

a,int low,

int high)

//從前往後比較

while

(end>start&&a[start]

<=key) start++;if

(a[start]

>=key)

//此時第一次迴圈比較結束,關鍵值的位置已經確定了。左邊的值都比關鍵值小,右邊的值都比關鍵值大,但是兩邊的順序還有可能是不一樣的,進行下面的遞迴呼叫

}//遞迴

if(start-

1>low)

quicksort

(a,low,start-1)

;//左邊序列。第乙個索引位置到關鍵值索引-1

if(end+

1quicksort

(a,end+

1,high)

;//右邊序列。從關鍵值索引+1到最後乙個

}// 快速排序_哨兵減少交換

private

static

void

quicksort

(int

a,int head,

int tail)

a[low]

= pivot;

if(low > head +1)

quicksort

(a, head, low -1)

;if(high < tail -1)

quicksort

(a, high +

1, tail);}

}// 非遞迴快速排序

private

static

void

quicksort

(int

a,int start,

int end)

if(r > index +1)

}}}private

static

intpartition

(int

a,int start,

int end)

a[start]

= pivot;

return start;

}//歸併排序

public

static

void

merge

(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

int[

]sort

(int

nums,

int low,

int high)

return nums;

}

各種常見排序演算法實現

將各種常見排序演算法簡單實現了一下,包括 1 簡單插入排序 2 氣泡排序 3 簡單選擇排序 4 快速排序 5 希爾排序 6 堆排序 7 歸併排序 如下 include include include define len 10 初始化陣列 void init int arr,int len 列印陣列...

C 各種常見排序演算法

1 氣泡排序的本質在於每一趟迴圈從陣列的頭走到尾找到最大的值放在最右邊,下一次迴圈繼續從剩下的n 1個數中尋找最大值放到最右邊。直到剩下最後倆個數比較交換後結束。2 比較方式也簡單易懂,拿公升序為例,用a i 與a i 1 比較,如果a i a i 1 swap a i a i 1 當然,如果10個...

排序 各種排序演算法

每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子表中適當位置,直到全部記錄插入完成為止 待排序的記錄放在陣列r 0,n 1 中 排序過程中將r分成兩個子區間,有序區r 0,i 1 無序區r i,n 1 將當前無序區的第1個記錄,插入到有序區中適當的位置上 每次是有序區增加乙個記錄,知道...