1.最简单的冒泡排序的算法
2.采用先将数组的前k个数先进行排列,然后将剩下数依次的导入,与第k个数进行比较,若是比第k个数小的话就直接忽略
若是比第k个数大的话,将其加入到排好的数中,同时将最后一个第k个数给去掉
#include<iostream>
using namespace std;
#define MAX 100
//冒泡排序
int max_k_order1(int arry[],int N,int k)
{
int i,j;
int temp;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
{
if(arry[i]<arry[j])
{
temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
return arry[k-1];
}
int max_k_order(int aryy[],int N,int k)
{
int i,j,temp,last_result;
int *p;
p=(int *)malloc(sizeof(int)*k);
for(i=0;i<k;i++)
p[i]=aryy[i];
for(i=0;i<k;i++)
for(j=i+1;j<k;j++)
if(p[i]<p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
for(i=k;i<N;i++)
if(p[k-1]<aryy[i])
{
p[k-1]=aryy[i];
for(j=k-1;j>0;j--)
{
if(p[j]>p[j-1])
{
temp=p[j];
p[j]=p[j-1];
p[j-1]=temp;
}
}
}
last_result=p[k-1];
free(p);
return last_result;
}
int main()
{
int aryy[10]={3,5,1,7,2,8,9,0,1,6};
int i;
for(i=0;i<10;i++)
cout<<aryy[i]<<' ';
cout<<endl;
cout<<max_k_order(aryy,10,2)<<endl;
cout<<max_k_order1(aryy,10,2)<<endl;
system("pause");
return 1;
}