练习1.1 编写一个程序解决选择问题
/* For selecting kth number from n numbers.
*Author: gyh
*Date: 20141214
*Version: 1.0
*/
#include<stdio.h>
void select(int n, int k){
int a[n];
printf("Enter %d numbers: ", n);
/*输入n个数*/
for(int i=0;i<n;i++){
scanf("%d", &a[i]);
}
printf("the %dth number is: ", k);
/*对前k个数进行排序*/
for(int i=0;i<k;i++){
int j = i, temp = a[j];
for(;j>0;j--){
if(temp>a[j-1]){
a[j] = a[j-1];
}else{
break;
}
}
a[j] = temp;
}
for(int i=k;i<n;i++){
/*把从第k个数之后的每个数分别同已排好序的数进行比较
*从后向前进行比较*/
if(a[i]>a[k-1]){
a[k-1] = a[i];
{
for(int j=k-1;j>0;j--){
if(a[j]>a[j-1]){ //如果a[i]比前面的数大
int temp = a[j];
a[j] = a[j-1]; //前面的数后移
a[j-1] = temp;
}else{
break;
}
}
}
}
}
printf("%d\n",a[k-1]);
}
int main(void){
int n, k;
printf("Enter the count of number and k's value: ");
scanf("%d%d", &n, &k);
select(n, k);
return 0;
}
example:
Enter the count of number and k's value: 8 4
Enter 8 numbers: 9
8
7
5
3
4
1
4
the 4th number is: 5