碼上生花,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 ...