快速排序,這種排序方式時間複雜度平均情況下為o(nlogn),而且適合資料非常多的排序方法。它採用一種分治思想
,在執行的過程種就把第k大問題解決了。**很簡單但是非常巧妙,不用額外申請記憶體空間。
**如下可以自己跑一下:
package com.jxd.test;
public class quicksort ;
new quicksort().quick_sort(arr);
system.out.println("");
}public void quick_sort(int arr)
private void quick_sort_c(int arr, int first, int end)
/*** 這個方法不用額外申請記憶體空間
** @param arr
* @param first
* @param end 最後乙個元素
*/private int partition(int arr, int first, int end)
i++;}}
if (arr[i] > temp)
return i;
}/**
* 陣列的互換方法
* 下標source 和target互換
** @param a
* @param source
* @param target
*/private void swap(int a, int source, int target)
}
快速排序 第K大 第K小的問題
這裡的快排 是一種稍微改進的快排,即減少一些不必要的交換次數。quick sort void quick sort int s,int e a s a i 此時 i j 為最後找到的最小的數,需要放在樞軸處 即位置s a i x quick sort s,i 1 quick sort i 1,e 第...
快速排序 快排求第K大
快速排序 快排採用分治的策略,先從數列中取出乙個元素作為作為基準元素,以基準元素為標準,將問題分解為兩個子串行,使小於基準的子串行在左側,使大於等於基準元素的子串行右側,對兩個子串行再進行快速排序,最終得到排好序的序列。時間複雜度 o nlogn 空間複雜度o logn 快速排序是不穩定的 code...
面試演算法 尋找第K大的數 快速排序的應用
有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。測試樣例 1,3,5,2,2 5,3 返回 2 public class 尋找第k大的數 system.out.println findkt...