当前位置:首页 > 选择排序c语言代码从小到大

选择排序c语言代码从小到大

C语言如何用选择法排序任意键入十个数(由小到大、从小到大)?

#include

main(void)

{

inti,j,a[10],p=0,t=0,temp;

printf("请输入原数组:\ ");

for(j=0;j<10;j )

scanf("%d",&a[j]);

temp=a[0];

for(j=0;j<9;j )

{

t=j;

temp=a[j];

for(i=j 1;i<10;i )

if(temp>a[i])//这也是从小到大排列假如是大至小者改为if(temp

emp=a[i];p=i;}

emp=a[p];a[p]=a[t];a[t]=temp;}

}

printf("排列后数组为:\ ");

for(j=0;j<10;j )

printf("%d",a[j]);

}

用c语言编程:电脑键盘上键入N个整数金额,使该数组里的数依照从小到大的顺序排序(选择法排序)

#include"stdio.h"

#defineN10

intmain(intargc,char*argv[]){

inta[N],i,j,k;

printf("Pleaseenter%dinteger(s)...\ ",N);

for(i=0;i

for(i=0;i

for(k=i,j=k 1;j

if(a[k]>a[j])

k=j;

if(k!=i)

j=a[k],a[k]=a[i],a[i]=j;

printf("%d",a[i]);

}

printf("\ ");

return0;

}

代码图片和运作示例:

C语言:用选择排序法对一个数组中的数进行筛选,从小到大,规定挑选出小一点进行筛选

那样:

int*a=(int*)malloc(sizeof(int)*n);//动态分配数组室内空间,几个原素,n便是几。

for(i=0;i

{

a[i]=入录标值;

}

Sort(a,n);

for(j=0;j

{

printf("%d",a[ij);//输出内容是排列好了的

}

//下边方法是什么用于排列的

voidSort(int*a,intn)

{

inti,j,temp;

for(i=0;i

{

for(j=i;j

{

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

拓展材料:

常见问题

1、选择排序法是把编码序列分成2段,井然有序前端和混乱后列,每一次搜索混乱后列中最大的原素,把它插进到井然有序前端最结尾处,直到混乱后列最后一个元素,最后排列后编码序列为升序编码序列。

2、适用包含数组和空间向量等在内的编码序列。

3、选择排序与冒泡排序的差别是选择排序每一次赋值的时候会记牢较大的元素部位,只进行一次互换,而冒泡排序每一次赋值的时候会互换2个次序非法的原素。

优化算法程序流程:

#include"stdafx.h"

#include

usingnamespacestd;

voidSelectSort(intA[],intn)

{

for(inti=0;i

{

intmax=i;

for(intj=i 1;j

{

if(A[j]>A[max])

max=j;

}

inttemp=A[max];//互换混乱后列中首原素与较大的元素部位

A[max]=A[i];

A[i]=temp;

}

}

求C语言将数组原素大小排序!!

C语言将数组原素大小排序方式:

下列采用的是冒泡排序法虚线数组从小到大排列。

观念:每一次邻近两数较为,若降序,则把大一点的数放进后边,一次循环系统之后,就会把最大的数放到最终。

10、2、3、4、5、6、9、8、7、1是输入待排名的等差数列,通过第一次排列,将最大的一个,10放到最终,第二次排列,将剩下来的2、3、4、5、6、9、8、7、1开展冒泡泡,将现阶段最大的一个9放到倒数第二位置,依此类推。

以下属于实际编码:

#include

intmain(){

intnums[10]={10,2,3,4,5,6,9,8,7,1};

inti,j,temp,isSorted;

//优化计算方法:较多开展n-1轮较为

for(i=0;i<10-1;i ){

isSorted=1;//假定剩下来的原素早已排列好啦

for(j=0;j<10-1-i;j ){

if(nums[j]>nums[j 1]){

temp=nums[j];

nums[j]=nums[j 1];

nums[j 1]=temp;

isSorted=0;//一旦必须互换数组原素,就证明剩下来的原素并没有排列好

}

}

if(isSorted)break;//要是没有产生互换,表明剩下来的原素早已排列好啦

}

for(i=0;i<10;i ){

printf("%d",nums[i]);

}

printf("\ ");

return0;

}

拓展材料:

别的将数组从小到大排列的优化算法

下列采用的是选择排序法完成数组从小到大排列。

观念:从第一个数逐渐,每一次和后边剩下的数进行对比,若降序,则假如后面的数比现阶段数字小,开展互换,和后边的所有的数较为、互换后,就会把现阶段的极小值放到当前的位置

输入编码序列为10、2、3、4、5、6、9、8、7、1进行一次排列之后将最小的数放到了第一位(a[0]和它后边的所有数进行对比,若a[0]比后边的数大,开展互换),依此类推。

以下属于实际编码:

#include

intmain(void){

inta[1001];

intn,i,j,t;

scanf("%d",&n);//n为要排列的数字的数量

//键入必须排列的数

for(i=0;i

scanf("%d",a i);

//下面进行筛选

for(i=0;i

{

for(j=i 1;j

{

if(a[i]>a[j])//a[i]为当前值,倘若比后边的a[j]大,开展互换

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}//每排列一次,就会把a[i](包含a[i])以后的极小值放到a[i]位置

for(j=0;j

printf("%-5d",a[j]);

printf("\ \ ");

}

return0;

}

撰写C语言程序,把一个数组按从小到大的顺序排序下去

源代码及其优化算法注解如下所示:

#define_CRT_SECURE_NO_WARNINGS//VS编译环境要进行宏定义,VC6.0可忽视

#include//输出库函数

intmain()

{

intnumber[10],New_number[10];//界定数组的数据格式为整形

inti,j,m,n,k;//定义变量的数据格式为整形

printf("input10number:");//文本提醒

for(i=0;i<=9;i )//用循环系统键入标值给数组number并赋给数组New_number

{

scanf("%d",&number[i]);//键入10个整形美容数据到数组中

New_number[i]=number[i];//数组number原素赋给数组New_number

}

for(n=0;n<=8;n )//需要进行(10-1)组较为

for(j=0;j<=8-n;j )//每一组开展(10减第多组)次较为

{

if(number[j]>number[j 1])//比较大小并将小的赋给前边的数组

{

k=number[j];//将也较大元素取值给正中间原素

number[j]=number[j 1];//将比较小元素送到前边一个位置

number[j 1]=k;//将中间变量原素赠给后边一个位置

}

if(New_number[j]

{

k=New_number[j 1];//将比较小元素取值给正中间原素

New_number[j 1]=New_number[j];//将也较大元素送到前边一个位置

New_number[j]=k;//将中间变量原素赠给后边一个位置

}

}

printf("min-->max:\ ");//文本提醒

for(m=0;m<=9;m )//先后从小到大导出

printf("%d",number[m]);//导出原素

printf("\ ");

printf("max-->min:\ ");//文字提示

for(m=0;m<=9;m++)//依次从大到小输出

printf("%d",New_number[m]);//输出元素

printf("\n");

return0;

}

程序运行结果如下:

扩展资料:

其他简单实现程序:

#include

intmain()

{

inta[10]={0};

inti,j,temp;

for(i=0;i<10;i++)

{

scanf("%d",&a[i]);

}

for(i=0;i<10;i++)

{

for(j=0;j<10-i-1;j++)

{

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for(i=0;i<10;i++)

printf("%d",a[i]);

return0;

}

C语言如何输入十个数,按从大到小顺序排列!

用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:

#include

intmain()

{

inti,j,a[10],t;

printf("输入数");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++)

if(a[i]

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

printf("从大到小");

for(i=0;i<10;i++)

printf("%2d",a[i]);

return0;

}

扩展资料:

代码还可以设计,如下:

#include

intmain()

{

inta[10],i,j,t;//定义数组;

for(i=0;i<10;i++){

scanf("%d",&a[i]);//给数组赋值;

}

for(i=0;i<9;i++)//10个数,进行9轮比较;

for(j=0;j<10-i;j++){//第一个数比较9次,依次递减;

if(a[j]>a[j+1]){//交换值;

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

for(i=0;i<10;i++){

printf("%d\n",a[i]);//输出数组的值;

}

return0;

}

}

printf("thesortednumbers:\n");

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

}

参考资料:百度百科-printf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至举报,一经查实,本站将立刻删除。

最新文章