求教一道初级的C语言选择排序法的题目

随机产生40个float类型的数组元素,并用选择排序法按降序排列。... 随机产生40个float类型的数组元素,并用选择排序法按降序排列。 展开
 我来答
kkbenben
2014-04-24
知道答主
回答量:15
采纳率:0%
帮助的人:19.3万
展开全部
//取随机时间就可以了
# include <stdio.h>
# include <stdlib.h>//取随机数
# include <time.h>//时间函数头文件
int main(void)
{
 int i,j,t;
 
 float sum[40];//取随机数做谜底
 srand((float)time(0));//用现行时间函数返回值 置随机种子
 //answer = rand()%100+1;//将随机数的末尾2位数取出来 + 1  相当于 99 + 1 =随机数 最大100;
 
 for(i = 0; i < 40; i++)
 {
  sum[i] = rand()%100+1;
 }
 for (i = 0; i < 40; i++)
  for(j = i+1 ; j < 40; j++)
  {
   if(sum[i] > sum[j])
   {
    t = sum[i];
    sum[i] = sum[j];
    sum[j] = t;
   }
  }
 
 for(i = 0; i < 40; i++)
 {
  printf("%6.1f\n",sum[i]);
 } 

 return 0;
}
xoaxa
2014-04-24 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3408万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int const N = 40;

void SelectSort(float a[], int n) {
int i,j,k;
float t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(a[k] < a[j])
k = j;
}
if(i != k) {
t = a[i];
a[i]  =a[k];
a[k] = t;
}
}
}

void Show(float a[], int n) {
int i;
for(i = 0; i < n; ++i) {
if(i && i % 10 == 0) printf("\n");
printf("%5.2f   ",a[i]);
}
printf("\n");
}

void main() {
int i;
float a[N];
srand(time(NULL));
for(i = 0; i < N; ++i)
a[i] = (rand()%1001 + 10)/100.0f;
printf("排序前:\n");
Show(a,N);
SelectSort(a,N);
printf("\n排序后:\n");
Show(a,N);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
覆盖黑色
推荐于2016-07-21 · 超过22用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:33.7万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

/*选择排序*/
void arr_sort(float arr[],int num){
int i,j;
float k;
for(i = 0;i < num-1;++i){
for(j = i+1;j < num;++j){
if(arr[i] > arr[j]){
k = arr[j];
arr[j] = arr[i];
arr[i] = k;
}
}
}
}
/*打印数组*/
void arr_print(float arr[],int num){
int i;
for(i = 0;i < 40;++i){
printf("%g ",arr[i]);
}
printf("\n");
}
int main(int argc,char* argv[]){
int i;
float arr[40];
srand(time(0));
for(i = 0;i < 40;++i){
arr[i] = (float)(rand() % 100);
}
arr_print(arr,40);//随机数组
arr_sort(arr,40);//选择排序
arr_print(arr,40);//排序后数组
printf("\n");
return 0;
}
PS:运行了,没错!想看结果,把40换成10比较明显
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式