【全网最清晰快速排序,看完快排思想和代码全部通透,不通透你打我!-哔哩哔哩】 https://b23.tv/8GxEKIk
代码详解如上
#include <iostream>
using namespace std;
int getPort(int* a, int low, int high)
{
int port = a[low];
while(low < high)
{
while(low<high && port <= a[high])
{
high--;
}
a[low] = a[high];
while(low<high && port >= a[low])
{
low++;
}
a[high] = a[low];
}
a[low] =port;
return low;
}
void quickSort(int *a, int low, int high)
{
if(low < high)
{
int port = getPort(a, low, high);
quickSort(a, low, port-1);
quickSort(a, port+1, high);
}
}
int main()
{
int arr[] = {56, 60, 70, 90, 80, 10, 20, 40};
int len = sizeof(arr)/sizeof(arr[0]);
quickSort(arr, 0, len-1);
for(int i =0; i<len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
快速排序解决一列算法题
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型vector
* @param n int整型
* @param K int整型
* @return int整型
*/
int getPort(vector<int> &a, int low, int high)
{
int port = a[low];
while(low < high)
{
while(low<high && port <= a[high])
{
high--;
}
a[low] = a[high];
while(low<high && port >= a[low])
{
low++;
}
a[high] = a[low];
}
a[low] =port;
return low;
}
void quickSort(vector<int> &a, int low, int high)
{
if(low < high)
{
int port =getPort(a, low, high);
quickSort(a, low, port-1);
quickSort(a, port+1, high);
}
}
int findKth(vector<int>& a, int n, int K) {
// write code here
quickSort(a, 0, n-1);
return a[n-K];
}
};