一, 原快速排序的实现
http://blog.csdn.net/taotaoah/article/details/50987837
using System;
namespace taotao
{
class program
{
static void Main(string[] args)
{
int[] array = new int[] { 1, 3, 5, 2, 2 };
array = quick_sort(array, 0, array.Length - 1);
foreach (var item in array)
{
Console.WriteLine(item);
}
}
static int[] quick_sort(int[] array, int start, int end)
{
if (start < end)
{
int i = start; int j = end; int x = array[i];
while (i < j)
{
while (i < j && array[j] >= x)
j--;
if (i < j)
array[i++] = array[j];
while (i < j && array[i] < x)
i++;
if (i < j)
array[j--] = array[i];
}
array[i] = x;
quick_sort(array, start, i - 1);
quick_sort(array, i + 1, end);
}
return array;
}
}
}
二,根据题意修改如下:
测试样例:
[1,3,5,2,2],5,3
返回:2
using System;
namespace taotao
{
class program
{
static void Main(string[] args)
{
int[] array = new int[] { 1, 3, 5, 2, 2 };
int K = 3;
array = quick_sort(array, 0, array.Length - 1);
foreach (var item in array)
{
Console.WriteLine(item);
}
Console.Write(Fun(array, array.Length, K));
}
static int[] quick_sort(int[] array, int start, int end)
{
if (start < end)
{
int i = start; int j = end; int x = array[i];
while (i < j)
{
while (i < j && array[j] >= x)
j--;
if (i < j)
array[i++] = array[j];
while (i < j && array[i] < x)
i++;
if (i < j)
array[j--] = array[i];
}
array[i] = x;
quick_sort(array, start, i - 1);
quick_sort(array, i + 1, end);
}
return array;
}
static int Fun(int[] array, int len, int K)
{
return array[K - 1];
}
}
}