回顧Java各大排序演算法(持續更新)

2021-08-04 07:15:17 字數 2610 閱讀 8900

馬上大四了,面試前複習下基本的排序演算法,然後寫出來整理下。

/**

* 氣泡排序

**@param array 待排序的陣列

*/public

static

void

bubblesort(int array) }}

}

/**

* 選擇排序

**@param arr 待排序的陣列

*/public

static

void

selectionsort(int arr)

temp = arr[min]; //將最小元素放到已排序序列的末尾

arr[min] = arr[i];

arr[i] = temp;

}}

/**

* 快速排序入口

**@param arr 待排序的陣列

*/public

static

void

qucksort(int arr)

/*** 快速排序步驟一(遞迴實現)

**@param arr 待排序的陣列

*@param low 陣列下標

*@param high 陣列下標

*/private

static

void

qucksortstep1(int arr, int low, int high)

}/**

* 快速排序步驟二(將比「樞軸」(pivot)這個數小的放到左邊,大的放到右邊)

**@param arr 待排序的陣列

*@param low 陣列下標

*@param high 陣列下標

*@return 返回「樞軸」(pivot)的下標

*/private

static

intqucksortstep2(int arr, int low, int high)

arr[low] = arr[high];

while (low < high && arr[low] <= pivot)

arr[high] = arr[low];

}arr[low] = pivot;

return low;

}

/**

* 直接插入排序

*@param arr 待排序的陣列

*/public

static

void

directinsertsort(int arr)

arr[j + 1] = temp;

}}

/**

* 將有二個有序數列a[first...mid]和a[mid...last]合併。

**@param a 待排序的陣列

*@param first 待排序陣列的前乙個索引

*@param mid 待排序陣列的中間的索引

*@param last 待排序陣列的後乙個索引

*@param temp 臨時陣列用來存放排序後的值

*/private

static

void

mergearray(int a, int first, int mid, int last, int temp)

while (i <= m)

temp[k++] = a[i++];

while (j <= n)

temp[k++] = a[j++];

for (i = 0; i < k; i++)

a[first + i] = temp[i];

printarray(a);

}/**

* 歸併排序的遞迴

**@param a 待排序的陣列

*@param first 待排序陣列的前乙個索引

*@param last 待排序陣列的後乙個索引

*@param temp 臨時陣列用來存放排序後的值

*/private

static

void

mergesort(int a, int first, int last, int temp)

}/**

* 歸併排序入口

**@param a 待排序的陣列

*@param n 待排序的陣列長度

*/public

static

void

mergesort(int a, int n)

/**

* 基數排序(從個位開始)

**@param array 待排序的陣列

*@param d 表示最大的數有多少位

*/public

static

void

basesort(int array, int d)

for (int i = 0; i < 10; i++)

order[i] = 0;

}n *= 10;

k = 0;

m++;

}}

各大排序演算法

後面慢慢完善 includeint h 101 用來存放堆的陣列 int n 用來儲存堆中元素的個數,也就是堆的大小 交換函式,用來交換堆中的兩個元素的值 void swap int x,int y 向下調整函式 傳入乙個需要向下調整的結點編號i,這裡傳入1,即從堆的頂點開始向下調整 void si...

各大排序演算法比較

一 各種演算法比較序號 排序類別 時間複雜度 空間複雜度穩定1 插入排序 o n2 1 2希爾排序 o n2 1 3氣泡排序 o n2 1 4選擇排序 o n2 1 5快速排序 o nlogn o logn 6 堆排序o nlogn 1 7歸併排序 o nlogn o n 1氣泡排序 bubble ...

各大排序演算法自己總結

1.歸併排序 把十個數進行從小到大排序 每一次都把陣列分成兩部分,然後進行排序,然後把兩部分排好序再合併到一起,一次進行下去直到只剩下乙個元素,結束。時間複雜度為o n logn 快速排序也是分治演算法的經典例子。下面 和注釋自己純手敲的.include includeusing namespace...