问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用选择法将一组数字升序排序,谁懂C语言,谢谢

发布网友 发布时间:2022-05-02 18:38

我来回答

4个回答

热心网友 时间:2022-06-21 06:33

选择排序的原理为:
一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描
直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上的数。
代码如下:

void selectionSort(double *p, int n)
{
double temp;
int min, i, j;

for (i=0; i < n; i++)
{
min=i; //假设最小值的下标为i
for (j=i+1; j < n; j++) //查找i之后是否有更小的数,若有将其下标赋值给min
if (*(p+j) < *(p+min))
min = j;
if (min != i) //min不等于i说明i之后有更小的数,交换这两个数
{
temp = *(p+i);
*(p+i) = *(p+min);
*(p+min) = temp;
}
}
}

参考程序如下:
#include <stdio.h>
#include <malloc.h>

double *selectionSort(double *p, int n)
{
double temp;
int min, i, j;

for (i=0; i < n; i++)
{
min=i; //假设最小值的下标为i
for (j=i+1; j < n; j++) //查找i之后是否有更小的数,若有将其下标赋值给min
if (*(p+j) < *(p+min))
min = j;
if (min != i) //min不等于i说明i之后有更小的数,交换这两个数
{
temp = *(p+i);
*(p+i) = *(p+min);
*(p+min) = temp;
}
}
return p;
}

void main()
{
int n;
double *p;
printf ("输入数据个数:\n");
scanf("%d",&n);
p = (double *)malloc(n*sizeof(double));
printf("输入数据:\n");
for(int i=0;i<n;i++)
scanf("%lf",&p[i]);
p = selectionSort(p,n);
printf("输出升序结果:\n");
for(i=0;i<n;i++)
printf ("%lf\t",p[i]);
printf("\n");
}

热心网友 时间:2022-06-21 06:33

#include "stdio.h"
main()
{
int a[11]; //输入数组元素个数由你自己定
int i,j,k,n;
printf("please input numbers:\n");
for (i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=i+1;j<=10;j++)
{
(a[i]>a[j])?(a[0]=a[i],a[i]=a[j],a[j]=a[0]):(a[0]=0);
}
for(i=1;i<11;i++)
printf("%d ",a[i]);
printf("\n");
}

热心网友 时间:2022-06-21 06:34

你好,这是我自己总结的升序源代码:

/**********************************
* 在main函数中声明排序函数
* 编写两种不同思考方式的排序函数
* 实现从小到大的数值排序
***********************************/

#include <stdio.h>
int main ()
{
void sort(int a[] , int n);

int i;
int a[10];

printf("Please input 10 numbers :\n");

for(i=0; i<10; i++)
{
scanf("%d",&a[i]);

}

sort(a,10);//函数调用

return 0;

}

void sort(int a[] , int n)//另外一种形式的冒泡法
{
int i,j,t,min;

for(i=0; i<n-1; i++)
{
min=i;

for (j=i+1; j<n; j++)
{
if (a[min] > a[j])//把数组中的最小值的下标赋给min
{
min=j;
}

t = a[i];
a[i] = a[min];//把最小值赋给a数组的第一个数
a[min] = t;

}
}

printf("\nThe sorted numbers are :\n");

for(i=0; i<n; i++)
printf("%4d",a[i]);
printf("\n");

}

/*这种就是正宗的冒泡排序
void sort(int a[] , int n)//冒泡法排序,
{
int i,j,t;

for(i=0; i<n-1; i++)
{
for(j=0; j<n-1-i; j++)//实现的是:最大的数沉底
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

printf("\nThe sorted numbers are :\n");

for(i=0; i<n; i++)
printf("%4d",a[i]);

printf("\n");

}

*/

热心网友 时间:2022-06-21 06:34

你的问题是输入的数字排序,还是随便输入已知的数字的个数,让他们排序?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...爱你你是我的罗密欧 , 我愿意变成你的朱丽叶' 谁知 有句歌词是“我爱你你是我的朱丽叶,我愿意变成你的梁山伯”是哪... 为什么打印出来的文档页码和原来的不一样 ...两台电脑用路由器上网一台是W7一台是XP如何实现两台电脑共享文件 win7怎么联另一台电脑win7怎么让网络和另一台电脑共享 w7的系统怎么共享电脑w7系统里面文件怎么共享另一台电脑 共享win7电脑w7系统里面文件怎么共享另一台电脑 翡翠有收藏价值吗,我们玩家如何去投资 价格一两万元的翡翠如何挑选 ppt怎么转换成视频?简单四步法,轻松搞定ppt微课录制 用选择法将一组数字升序排序,谁懂C语言,谢谢 Java几种简单的排序源代码 Java几种简单的排序源代码 编一程序用简单选择排序方法对n个整数排序(从大到小)。对n个数进行降序... 数据结构简单选择排序算法怎么写? 谁会写选择法排序的代码阿。急急急,在线等。 C语言程序---用简单选择法对10个整数排序 qq好友相识天数在哪里看 想找一个端游好好玩玩,好玩的回合制端游有哪些? 不氪金的回合制游戏真的有吗,哪一个好玩? 回合制武侠端游中,有哪些好玩的端游推荐一下给我的? 想找一款回合制端游,有什么好玩的端游吗? 原来的游戏玩腻了,请问角色回合制端游哪个好玩? 回合制游戏除了《梦幻西游》外哪个最好玩? 最新的回合制网游,你觉得哪一个更好玩? 想问一下,回合制游戏哪个好玩点? 回合制端游游戏中哪个能好玩一些? 求回合制端游,请问有哪个端游好玩 我原来也是建行的ETC,请问是要把原来的卡注销重新申请办一张卡同时用于2辆车吗? 梦见老天下大雨淹了拆除老宅? vb代码选择法排序的代码? vb代码选择法排序的代码? 选择法排序的代码编码? 选择法排序的代码编码? Apple Watch怎么连接WiFi无线网? 红米手机的性能相当于哪些高通cpu的手机? iwatch3nike +gps版能连wifi吗 红米note8:搭载骁龙665处理器 支持18W快充 iwatch如何设置wifi 买国债值得么? 哪儿买国债,回报率多少,今年适合买吗 现在是购买今年的国债好还是定期存款好? 格子外套内搭什么好看 外套是黑灰色格子的衣服,里面穿什么好看 还有穿什么颜色的裤子? 网吧有pr软件吗 战地:PR如何在网吧快速安装?先安装在U盘上可以吗? premiere在网吧不能用 我想组装一台电脑,就和网吧好一点的电脑的配置差不多,我要运行pr这 电脑里有pr但是找不到 适合美术生写生的地方有哪些?