使用选择排序的思想:时间复杂度o(n*k)
#include<iostream>
using namespace std;
void selectMax(int arr[],int n,int k)
{
for(int j = 0; j < k; ++j)
{
for(int i = 0; i < n - j - 1; ++i)
{
if(arr[i] > arr[i + 1])
swap(arr[i],arr[i + 1]);
}
}
}
void selectSort(int arr[],int n)
{
for(int i = 0; i < n - 1; ++i)
{
for(int j = 0; j < n - i - 1; ++j)
{
if(arr[j] > arr[j + 1])
swap(arr[j],arr[j + 1]);
}
}
}
void swap(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
int main(void)
{
int arr[] = {3, 5, 4, 8, 9, 10, 1, 2};
//selectSort(arr,8);
selectMax(arr,8,2);//最的两个数位于数组的最后。
for(int i = 0; i < 8; ++i)
{
cout<<arr[i]<<endl;
}
system("pause");
return 0;
}
快速排序的思想解决。o(n*logk)
#includ