快排
剑指 Offer 40. 最小的k个数
快排(紧记快排模板,partition & fastSort)
int[] fastSort(int arr[], int l, int r){
if(l < r){
int pos = partition(arr, l, r);
fastSort(arr, l, pos-1);
fastSort(arr, pos+1, r);
}
return arr;
}
int partition(int[] arr, int l, int r){
int tmp = arr[l];
while(l < r){
while(l<r && arr[r]>=tmp) r--;
arr[l] = arr[r];
while(l<r && arr[l]<=tmp) l++;
arr[r] = arr[l];
}
arr[l] = tmp;
return l;
}
剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个
利用快排思想,比较拼接起来的字符串的大小,进行排序
// 先把int数组转化成字符串数组,再进行快排(利用compareTo进行比较)其他与快排相同
strings[i] = String.valueOf(nums[i]);