用选择法对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...
繁逄香连:[答案] #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语言中的题),其中的“选择法”是指的是什么?它的 - ?
繁逄香连: 选择的要比冒泡的多声明一个.比较的次数是一样的,选择排序每扫描一遍数组;次轻":"<:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素.将待排序的元素看作是竖着排列的"的元素就浮到了次高位置,所以...
鄱阳县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]