leetcode 陣列排序

2021-10-06 21:16:50 字數 2438 閱讀 7091

碼上生花,echarts 作品展示賽正式啟動!>>>

我還是太菜了啊,基礎的排序演算法已經忘記了,今天花一晚上一定要記牢!!!!!

public int sortarray(int nums) 

/**快速排序

**/void qsort(int arr,int s,int e)

arr[l] = temp;

qsort(arr,s,l);

qsort(arr,l + 1, e);}}

/**選擇排序

**/void selectsort(int arr)else}}

}/**

* 希爾排序 - 插入排序的改進版。為了減少資料的移動次數,在初始序列較大時取較大的步長,通常取序列長度的一半,此時只有兩個元素比較,交換一次;之後步長依次減半直至步長為1,即為插入排序,由於此時序列已接近有序,故插入元素時資料移動的次數會相對較少,效率得到了提高。

** 時間複雜度:通常認為是o(n3/2) ,未驗證  穩定性:不穩定

* [@param]( arr

*/void shellsort(int arr)else break;}}

d >>= 1;}}

/*** 桶排序 - 實現線性排序,但當元素間值得大小有較大差距時會帶來記憶體空間的較大浪費。首先,找出待排序列中得最大元素max,申請記憶體大小為max + 1的桶(陣列)並初始化為0;然後,遍歷排序數列,並依次將每個元素作為下標的桶元素值自增1;

* 最後,遍歷桶元素,並依次將值非0的元素下標值載入排序數列(桶元素》1表明有值大小相等的元素,此時依次將他們載入排序數列),遍歷完成,排序數列便為有序數列。

** 時間複雜度:o(x*n)   穩定性:穩定

* [@param]( arr

*/void bucketsort(int arr)

int ar = 0;

for(int i = 0; i < bk.length; i++)}}

/*** 基數排序 - 桶排序的改進版,桶的大小固定為10,減少了記憶體空間的開銷。首先,找出待排序列中得最大元素max,並依次按max的低位到高位對所有元素排序;

* 桶元素10個元素的大小即為待排序數列元素對應數值為相等元素的個數,即每次遍歷待排序數列,桶將其按對應數值位大小分為了10個層級,桶內元素值得和為待排序數列元素個數。

* [@param]( arr

*/void countsort(int arr)

if(max < 0) max = -max;

max = max.tostring().length();

int bd = new int[19][arr.length];

for(int k = 0; k < max; k++)

int fl = 0;

for(int l = 0; l < 19; l++)}}

bk = new int[19];

fl = 0;}}

/*** 歸併排序 - 採用了分治和遞迴的思想,遞迴&分治-排序整個數列如同排序兩個有序數列,依次執行這個過程直至排序末端的兩個元素,再依次向上層輸送排序好的兩個子列進行排序直至整個數列有序(模擬二叉樹的思想,from down to up)。

** 時間複雜度:o(nlogn)   穩定性:穩定

* [@param]( arr

*/void mergesortinorder(int arr,int bgn,int mid, int end)else

}while(l <= mid)

while(m <= e)

for(int i = 0; i < arrs.length; i++)

}void mergesort(int arr, int bgn, int end)

int mid = (bgn + end) >> 1;

mergesort(arr,bgn,mid);

mergesort(arr,mid + 1, end);

mergesortinorder(arr,bgn,mid,end);

}/**

* 堆排序 - 堆排序的思想借助於二叉堆中的最大堆得以實現。首先,將待排序數列抽象為二叉樹,並構造出最大堆;然後,依次將最大元素(即根節點元素)與待排序數列的最後乙個元素交換(即二叉樹最深層最右邊的葉子結點元素);

* 每次遍歷,重新整理最後乙個元素的位置(自減1),直至其與首元素相交,即完成排序。

** 時間複雜度:o(nlogn)   穩定性:不穩定

** @param arr

*/void heapsort(int nums)

for (int i = size - 1; i >= 1; i--)

}void adjust(int nums, int len, int index) }}

leetcode陣列排序

對陣列a按照偶數和奇數重新排序,使得偶數在前,奇數在後。可以返回任何一種滿足這個條件的陣列即可。given an arrayaof non negative integers,return an array consisting of all the even elements ofa,follow...

LeetCode 陣列排序問題

給定乙個非負整數陣列 a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當 a i 為奇數時,i 也是奇數 當 a i 為偶數時,i 也是偶數。你可以返回任何滿足上述條件的陣列作為答案 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5 也會...

陣列的相對排序(LeetCode)

題目鏈結 給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 輸入 arr1 ...