您的位置:首页 > 理论基础 > 数据结构算法

第一章 引论

2014-12-15 16:39 246 查看
练习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
;
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息