#include <iostream>
using namespace std;
int Grial(int a[], int m,int n)
{
int i = m;
int j = n;
int temp = a[m];
while (i < j)
{
while (i<j && a[j]>=temp)j--;
a[i] = a[j];
while (i<j && a[i]<=temp)i++;
a[j] = a[i];
}
a[i] = temp;
return i;
}
int Grial(int a[], int m,int n, int val)
{
if (m <= n)
{
int index = Grial(a,m,n);
if (index < val-1)
{
Grial(a, index + 1, n, val);
}
else if (index>val-1)
{
Grial(a, 0, index - 1, val);
}
else
{
return a[index];
}
}
}
int main()
{
int a[] = {1,4,5,2,3};
cout << Grial(a, 0, sizeof(a) / sizeof(int)-1, 5);
}笔试题之:快排求第n大的数字
最新推荐文章于 2024-04-28 23:40:39 发布
本文介绍了一个基于快速排序思想的快速选择算法实现。该算法通过递归地将数组划分为两个部分来查找第k小的元素,能够有效地解决寻找未完全排序数组中特定位置元素的问题。

1210

被折叠的 条评论
为什么被折叠?



