用选择法对10个整数从小到大排序

作者&投稿:藤刚 (若有异议请与网页底部的电邮联系)
编写程序,用选择法对10个整数按从小到大顺序排序~

#include
void sort(int array[],int n)
{ // n 为数组元素个数
int i,j,k,temp; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置
for(i=0;i<n-1;i++)
{
k=i;//初始化为基准位置
for(j=i+1;j<n;j++)
{
if (array[j]<array[k]) k=j ; // k 始终指示出现的较小的元素的位置
} //for
if(k!=i)
{
temp=array[i];
array[i]=array[k];
array[k]=temp; // 将此趟扫描得到的最小元素与基准互换位置
}
}
}
int main()
{
int a[10]={1,3,6,8,9,7,5,4,2,1};
int i;
printf("before
");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
sort(a,10);
printf("
after
");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}


#include#includevoid swap(int*a,int*b){int temp; temp=*a; *a=*b; *b=temp;}void select_sort(int a[],int n){int i,j,min,m; for(i=0;ia[j])min=j; swap(&a[min],&a[i]); }}int main(void){int n,i,a[100]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); select_sort(a,n); printf("最终排序结果为:
"); for(i=0;i<n;i++) printf("%d ",a[i]); printf("
"); return 0;}

用选择法对10个整数排序,用scanf输入。你用下面这种输入方法就可以了。

# include<stdio.h>

int main()

{

int i,j,min,temp,a[10];

printf("enter data:
");

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

{

printf("please enter ten numbers:
");

scanf("%d",&a[i]); //输入10个数

}

printf("
");

printf("The orginal numbers:
");

for (i=0;i<10;i++)   //在c语言中,数组的下标从0开始

printf("%5d",a[i]); //输出这10个数

printf("
"); //以下8行是对这10个数排序

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

{min=i;

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

if (a[min]>a[j]) min=j;

temp=a[i]; //以下3行将a[i+1]~a[10]中最小值与a[i]对换

a[i]=a[min];

a[min]=temp;

}

printf("
The sorted numbers:
"); //输出已排好序的10个数

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

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

printf("
");

return 0;

}

扩展资料:

选择法排序基本思想:

每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:

初始序列:{49 27 65 97 76 12 38}

第1趟:12与49交换:12{27 65 97 76 49 38}

第2趟:27不动 :12 27{65 97 76 49 38}

第3趟:65与38交换:12 27 38{97 76 49 65}

第4趟:97与49交换:12 27 38 49{76 97 65}

第5趟:76与65交换:12 27 38 49 65{97 76}

第6趟:97与76交换:12 27 38 49 65 76 97 完成

参考资料:

百度百科- 用选择法对10个整数排序



错误处粗体标注如下:

#include//应为#include<stdio.h>

int main()

{

int i,j,n,a[10];//还需定义 int t;

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

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

//  n = 10, 既然下面用了i<n-1,应该定义n的值

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

for(j=i;ja[j])//应该为  for(j = i + 1;  j<n ; j ++)   if( a[i]>a[j])

{ n=a[i]; a[i]=a[j]; a[j]=a[i]; }//应该为{ t=a[i]; a[i]=a[j]; a[j]=t; }

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

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

return 0;

}

扩展资料:

选择排序法

选择排序法 是对 定位比较交换法(冒泡排序法) 的一种改进。

选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

简单选择排序的基本思想:第1趟,在待排序记录中选出最小的记录,将它与数组第2个数交换;第2趟,在待排序记录(即数组的其他数字)中选出最小的记录,将它与数组第3个数字交换;

以此类推,第i趟在待排序记录中选出最小的记录,将它与数组第i+1个数字交换,使有序序列不断增长直到全部排序完毕。

参考资料:百度百科-选择排序法



#include<stdio.h>

int main()

{

 int i,j,n,t,a[10];

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

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

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

 {

   n=i;

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

     if(a[j]<a[n])n=j;

   t=a[n]; a[n]=a[i]; a[i]=t;

 }

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

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

 return 0;

}



选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。

首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换。



然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。



一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。


main()
int array[10]; 

//给数组初始化!

int i,j,k,temp; 

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

k=i; 

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

if (array[j]<array[k]) k="j" ;="" temp="array[k];array[k]=array;array=temp;" }="" }



选择法排序,是最容易理解的。

写出程序,也是最简单的。

如下即是:




从键盘输入10个整数,编写程序用选择排序法对这十个数降序排列,要求主函 ...
include<stdio.h> int main(){int i,j,k,t,a[10];for(i=0;i<10;i++)\/\/输入10个整数 scanf("%d",&a[i]);for(i=0;i<9;i++)\/\/排序10个数,需要9轮 {k=i;\/\/当前最小值的编号 for(j=i+1;j<10;j++)\/\/扫描后续所有元素 if(a[j]<a[k])k=j;\/\/如后面的元素更小,...

C语言用冒泡法和选择法对10个数进行排序
include<stdio.h> \/ 选择排序法对十个整数进行排序 \/ \/\/n为数组长度;void sort(int a[],int n){ int temp,min;for(int i=0;i<n;i++){ min=i;\/\/先假设最小下标为i for(int j=i+1;j<n;j++)if(a[j]<a[min])min=j;\/\/对i之后的数进行扫描将最小的数赋予min if(min!=i...

C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序...
void SelectSort(int a[],int n){ int i,j,temp,min;for(i=0;i<n-1;i++){ min=i;for(j=i+1;j<n;j++)\/\/找到最小元素的位置 while(a[j]<a[min])min=j;if(min!=i){ temp=a[min];\/\/元素的交换 a[min]=a[i];a[i]=temp;} } } void main(){ int a[10],i;pr...

c语言的两种排序?
1、选择排序法 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 代码:include<stdio.h> int main(int argc,const char*argv[]){ int num[10],i,j,k,l,temp;\/\/用一个数组保存输入的数据 for(i=0;i<=9;i++){ scanf(...

将随机产生范围从1到100的10个整数放在数组a(1 to 10)中,用选择法将数...
代码如下:public class Array_Number { public static void main(String[] args) { double[] doubleArr = new double[10];List<Double> list = new ArrayList<Double>();stroeRandomNumber(doubleArr);storeInList(list, doubleArr);System.out.println(list);System.out.println("===");getList...

产生10个在100-200之间的随机整数,并放在一个一维数组中,用选择法完...
include<stdio.h>#include<stdlib.h>#includeint main(){int i,j,k,t,a[10]; srand(time(0)); for(i=0;i<10;i++) {a[i]=rand()%101+100; printf("%d ",a[i]); } printf("\\n"); for(i=0;i<9;i++) {k=i; for(j=i+1;j<10;j++) if(a[j]...

c语言:产生10个范围在{1,100}内的随机整数,利用选择排序法对这组数升 ...
include <stdio.h> include <stdlib.h> include int main (void){ srand(time(0));int a[10],n=10,i,j,k,temp;for (i=0;i<10;i++)a[i]=rand()%100+1;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){ temp=a[i];a[i]=...

编写程序:随机产生10个整数并存入数组中,用"选择排序法"对数组中的随机...
include<stdio.h>void main(){ int a[10],i,j,t,k; for(int i=0;i<10;i++) {srand(i);a[i]=rand();} for(i=0;i<10-1;i++) { for(k=i,j=i+1;j<10;j++) if(a[k]<a[j]) k=j; if(i!=k) { t=a[i]; a[i]=a[k]; a[k]...

C语言 从键盘输入10个整数,将这10个整数按从小到大的顺序输出。_百度知 ...
1、打开软件进入页面,点击文件-新建-文件-C++ Source File。2、输入预处理命令和主函数:#include<stdio.h>\/*输入输出头文件*\/void main()\/*空类型:主函数*\/。3、定义变量和数组的数据输入10个数:int a[10],i,t;\/*定义变量和数组数据类型为整型*\/printf("输入10个整数:");\/*输出文字...

随机生成十个1到50这个区间范围内不相同的整数,分别运用选择排序法和冒...
for(i = 0; i < 10; ++i){ a[i]=rand() % 50 + 1;} for(i=0;i<9;i++){ for(j=0;j<9-i;j++){ if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t;} } } for(j=0;j<10;j++){ printf("%d\\n",a[j]);} return 0;} 选择排序法:include<stdio...

鄱阳县19176307618: 任意输入10个整数的数列完成下列运算 要求用选择排序法将数列由小到大排序;( -
繁逄香连:[答案] #include"stdio.h" void main() { int i,j,t,a[10]; printf("pluase input 10 numbers:\n"); //输入 for(i=0;i

鄱阳县19176307618: C语言,用选择法对数组中10个整数按由小到大排序?求解释!!! -
繁逄香连: 首先以array[0]作为参照,从左到右扫描,找到最小的数据与array[0]位置交换. 接下来以array[1]作为参照,重复上述过程. ... k=i定位参照 k=j找到剩下数组中最小值

鄱阳县19176307618: 使用选择排序法对随机输入的10个整数按从小到大进行排序 求大神解答 -
繁逄香连: # include <stdio.h> void main() {int i,j,min,temp,a[11];for(i=1;i<11;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}for(i=1; i<11;i++){min=i;for(j=i+1;j<11;j++)if(a[i]>a[j]){min=j;temp=a[i];a[i]=a[min];a[min]=temp;}}for(i=1;i<11;i++)printf("%d\n",a[i]); }希望对你有助 不会可追问

鄱阳县19176307618: C语言如何用选择法排序任意输入十个数(从大到小、从小到大)? -
繁逄香连: #include <stdio.h> main(void) {int i,j,a[10],p=0,t=0,temp; printf("请输入原数组:\n");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]) //这是由小到大排序 如果是大到小则改...

鄱阳县19176307618: 从键盘输入十个整数,用选择法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出 -
繁逄香连: #include using namespace std; void collocate(int a[]);int main() {int i,a[10];coutfor(i=0;i cin>>a[i]; collocate(a); for(i=0;i cout coutreturn 0; }void collocate(int a[]) {int i,j,temp; for(i=0;i {for(j=i+1;j {if(a[j] {temp=a[j];a[j]=a[i];a[i]=temp;}}} }

鄱阳县19176307618: C语言 怎么样用选择法对10个整数排序? -
繁逄香连: 选择法排序是一种简单的容易实现的对数据排序的算法.以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同).要求对其元素排序使之递增有序.首先以一个元素为基准,从一个方向开始扫描,比如从左至...

鄱阳县19176307618: 用选择法对10 个整数按从小到大顺序排序.C语言 -
繁逄香连: 1234567891011121314151617181920212223242526272829 #include<stdio.h>#include<stdlib.h> voidswap(int*a,int*b) {inttemp; temp=*a; *a=*b; *b=temp; } voidselect_sort(inta[],intn) {inti,j,min,m; for(i=0;i<n-1;i++) {min=i;//查找最2113小5261值...

鄱阳县19176307618: 用选择法对10个整数从小到大排序 -
繁逄香连: #include#include#define N 9 int main() { int a[N],i,j,t,b; for(i=0;i { scanf("%d",&a[i]); } for(i=0;i { t=a[i]; for(j=i;j {if(t>a[j]) { t=a[j]; b=j; }} t=a[i]; a[i]=a[b]; a[b]=t; } for(i=0;i { printf("%d ",a[i]); } system("pause"); return 0; }

鄱阳县19176307618: 各位朋友帮我想想: 用选择法对10个整数从小到大排序(C语言中的题),其中的“选择法”是指的是什么?它的 -
繁逄香连: 选择的要比冒泡的多声明一个.比较的次数是一样的,选择排序每扫描一遍数组;次轻&quot:"&lt:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素.将待排序的元素看作是竖着排列的"的元素就浮到了次高位置,所以...

鄱阳县19176307618: 求C语言 程序用选择法对数组中10个整数从小到大排 -
繁逄香连: main() {int i,j,n,a[10]; ' 定义i, j,n,和一个数组 printf("输入10个数:"); for(i=0;i<10;i++) '循环0到9 scanf("%d,",&a[i]) ; '记得输入的时候后面加“,” for(i=0;ia[j]) '如果a[i]>a[j]) 改成(a[i]

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网