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

2021-08-09 21:05:56 字數 1685 閱讀 3466

package test;

/** * created by mff on 2017/10/26.

* 日常操作中常見的排序方法有:氣泡排序、快速排序、選擇排序、插入排序、希爾排序,甚至還有基數排序、雞尾酒排序、桶排序、鴿巢排序、歸併排序等。

*/public

class

sortmethods }}

}/**

* 快速排序

快速排序使用分治法策略來把乙個序列分為兩個子串行。* *

*@param numbers

*@param start

*@param end

*/public

static

void

quicksort(int numbers, int start, int end)

} while (i <= j);

if (start < j)

quicksort(numbers, start, j);

if (end > i)

quicksort(numbers, i, end);}}

/*** 選擇排序

選擇排序是一種簡單直觀的排序方法,每次尋找序列中的最小值,然後放在最末尾的位置。

* 在未排序序列中找到最小元素,存放到排序序列的起始位置

* 再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。

* 以此類推,直到所有元素均排序完畢。

**@param numbers

*/public

static

void

selectsort(int numbers)

temp = numbers[i];

numbers[i] = numbers[k];

numbers[k] = temp;}}

/*** 插入排序

插入排序的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。其具體步驟參見**及注釋。* *

*@param numbers

*/public

static

void

insertsort(int numbers)

}/*** *

*@param numbers

*/public

static

void

mergesort(int numbers, int left, int right)

if (i + (s - 1) < right)

merge(numbers, i, i + (s - 1), right);}}

/*** 歸併演算法實現

**@param data

*@param p

*@param q

*@param r

*/private

static

void

merge(int data, int p, int q, int r) else

k++;

}if (s == q + 1)

b[k++] = data[t++];

else

b[k++] = data[s++];

for (int i = p; i <= r; i++)

data[i] = b[i];

}}

java實現的一些簡單的排序演算法

冒泡 o n2 o n2 穩定 o 1 n小時較好 交換 o n2 o n2 不穩定 o 1 n小時較好 選擇 o n2 o n2 不穩定 o 1 n小時較好 插入 o n2 o n2 穩定 o 1 大部分已排序時較好 基數 o logrb o logrb 穩定 o n b是真數 0 9 r是基數 ...

常用的一些排序演算法(C 實現)

常用的排序演算法有氣泡排序,選擇排序,插入排序,歸併排序 希爾排序,堆排序等 1 冒泡 氣泡排序就是像旗袍一樣,最大的值逐漸上浮,我的實現方法是採用遞迴的,當然也可以不用遞迴 void bubblesort2 int array,int length if index length 1 bubble...

Java 一些常見的 排序演算法 面試也會問的演算法

氣泡排序 有兩層迴圈,外層遞減,內層遞增,每一趟都會得到最大的值,因為存在連個for迴圈,基本上每趟迴圈都會交換n次,所以一共交換n的平方次,所以時間複雜度為o n2 屬於效率最差的演算法 public static void pop inta 選擇排序 就是氣泡排序的改進版,首先選出乙個最小的元素...