编写程序,用选择法对10个整数按从小到大顺序排序
用选择法对10个整数排序,用scanf输入。你用下面这种输入方法就可以了。
# include
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个整数排序
int arr[10];
void sort()
{
for(int i=0;i<10;i++)
{
for(int j=i;j++;j<10)
{
if(arr[j]<arr[i])
{
int tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
}
}
void main()
{
int i;
for( i=0;i<10;i++)
scanf("%d", arr[i]);
int j;
for(j=0;j<10;j++)printf("%d ", arr[j])
sort();
for(int i=0;i<10;i++)printf("%d ", arr[j]);
}
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\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
sort(a,10);
printf("\nafter\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
用选择法对数组中15个整数按由小到大排序.
include<stdio.h>int main(){int a[15];int i,j,t,k;for ( i = 0; i < 15; i++ ) scanf("%d",&a[i]); \/*输入15个数*\/for ( i = 0; i<14; i++ ){ k = i; for ( j = i + 1; j < 15; j++) if ( a[k] > a[j] ) k = j;if (k != i...
编写一个程序,用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}...
public class a { public static void main(String[] arg){ int a[]={20,10,50,40,30,70,60,80,90,100} int i,n,max;for(i=0;i<=8;i++){ for(n=i+1;n<=9;n++){ if(a[i]<a[n]){ max=a[i];a[i]=a[n];a[n]=max;} } } for(i=0;i<=9;i++){ System...
C语言程序 用选择法对十个数排序
include <stdio.h> int main(){int i,j,min,temp,a[11];printf("enter data:\\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);} printf("\\n");printf("The orginal numbers:\\n");for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\\n");for...
用选择法对输入的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;\/\/如后面...
从键盘输入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;\/\/如后面的元素更小,...
...输入10个整数,利用选择法对10个整数由小到?
程序功能解释:1. 首先定义一个空列表 intList 用于存储输入的整数。2. 通过一个循环输入10个整数,并将它们添加到 intList 中。3. 使用两层循环实现选择排序算法,外层循环控制比较轮数,内层循环用于寻找列表中最小数的索引。4. 通过比较找出未排序的最小元素并进行交换。5. 最后,打印排序后的...
1.编写一个程序用选择排序法对数组 a[] = {20,10,50,30,70,59,65,80...
static void BubbleSort(int a []){ int temp=0;for (int i = 0; i < a.length ; i++) { for (int j = 0; j < a.length - i - 1; j++){ if (a[j]>a[j + 1]){ \/\/把这里改成大于,就是升序了 temp=a[j];a[j]=a[j + 1];a[j + 1]=temp;} } } } ...
C++用选择法对随机输入的十个数字降序排列 怎么写程序
代码如下 :include <iostream>using namespace std;int main(){int numbers[10];for (int i = 0; i < 10; i++)cin >> numbers[i];for (int i = 0; i < 10; i++) {int max = i;for (int j = i + 1; j < 10; j++) {if (numbers[max] < numbers[j])max = j;...
C语言:,用"选择法"对输入的10个字符按由大到小顺序排列
include<stdio.h> int main(void){ char a[11];int i,j;int max;int t;printf("请输入10个字符:\\n");gets(a);for(i = 0; i < 9; i++){ max = i;for(j = i+1; j < 10; j++)if(a[max] < a[j])max = j;t = a[max];a[max] = a[i];a[i] = t;} puts...
C语言,用选择法对数组中10个整数按由小到大排序?求解释!!!
选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不...
干克烟酸: #include<stdio.h>//标准输入输出函数调用需要此头文件、就是e799bee5baa6e997aee7ad94e58685e5aeb931333339653732那个printf和scanf函数要用的 void main()//主函数 {int i,j,min,temp,a[10]; printf("请输入:\n"); //屏幕输出引号...
漳州市18597908901: 从键盘输入十个整数,用选择法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出 - ?
干克烟酸: #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;}}} }
漳州市18597908901: 编写程序,从键盘输入10个整数,要求用选择法和冒泡法将它们按从大到小的顺序排序. - ?
干克烟酸: #include <stdio.h> main() { int s[10],t,i,j,x; printf("input 10 numbers:\n"); for(t=0;t<10;t++) scanf("%d",&s[t]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(s[j]>s[j+1]) {t=s[j];s[j]=s[j+1];s[j+1]=t;} printf("the result is:\n "); for(j=0;j<10;j++) printf("%d",s[j]); printf("\n"); }
漳州市18597908901: C语言,用选择法对数组中10个整数按由小到大排序?求解释!!! - ?
干克烟酸: 首先以array[0]作为参照,从左到右扫描,找到最小的数据与array[0]位置交换. 接下来以array[1]作为参照,重复上述过程. ... k=i定位参照 k=j找到剩下数组中最小值
漳州市18597908901: C语言 编程序 用选择法对10个数按从小到大的顺序排列. - ?
干克烟酸: int arr[10]; void sort() { for(int i=0;i<10;i++) { for(int j=i;j++;j<10) { if(arr[j]<arr[i]) { int tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } } } } void main() { int i; for( i=0;i<10;i++) scanf("%d", arr[i]); int j; for(j=0;j<10;j++)printf("%d ", arr[j]) sort(); for(int i=0;i<10;i++)printf("%d ", arr[j]); }
漳州市18597908901: 用选择法对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值...
漳州市18597908901: 用选择法对10个整数排序,c语言大神帮我写下 - ?
干克烟酸: #include <stdio.h> #include <stdlib.h> //选择排序, pnData要排序的数据, nLen数据的个数 int SelectSort(int* pnData, int nLen) { //i从[0,nLen-1)开始选择,确定第i个元素 for (int i = 0; i < nLen - 1; ++i) { int nIndex = i; //遍历剩余数据,选择出当...
漳州市18597908901: 用C语言用选择法对10个整数按升序排列(指针变量表示数组) - ?
干克烟酸: 选择法: #include "stdio.h" main() { int a[11]; int i,j,k,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("%5d",a[i]); } 起泡法: #include "stdio....
漳州市18597908901: 求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]
漳州市18597908901: C语言用选择法对10个整数排序.10个整数用scanf函数输入.利用数组 - ?
干克烟酸: 用冒泡法解决挺方便的,程序如下: #include void main() { int a[10]; int i,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<10;i++) printf("%d",a[i]); }