我都是照着老师的模板写的,不知道为什么老是会有元素被覆盖
#include <stdio.h>
void Qsort(int a[], int low, int high);
int part(int a[], int low, int high);
int main()
{
int a[10] = {0};
int n, k;
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
Qsort(a, 1, n);
printf("%d", a[k + 1]);
return 0;
}
void Qsort(int a[], int low, int high)
{
if(low < high)
{
int pivo;
pivo = part(a, low, high);
Qsort(a, low, pivo - 1);
Qsort(a, pivo + 1, high);
}
}
int part(int a[], int low, int high)
{
int mid = a[1];
while (low < high)
{
while (low < high && a[high] >= mid)
{
high--;
}
a[low] = a[high];
while (low < high && a[low] <= mid)
{
low++;
}
a[high] = a[low];
}
a[low] = mid;
return low;
}
比如样例这个
| 4 3 2 1 5 |
|---|
| 会被排成 |
| 1 1 2 4 5 |
| -----------: |