用选择法对10个整数由大到小排序。要求画出流程图
选择排序的过程如下:
从待排序的n个元素中找到最大的元素,将其与第n个元素交换位置。
在剩余的n-1个元素中,再找到最大的元素,将其与第n-1个元素交换位置。
重复上述步骤,直到只剩下一个元素为止。
其中,每经过一轮,就能确定出一个元素的位置。通过n-1轮选择,就能将这n个元素按照从大到小的顺序排好序。选择排序的时间复杂度为O(n^2)。
下面是使用C语言实现选择排序算法的示例代码:
#include <stdio.h>
void selection_sort(int arr[], int n)
{
int i, j, max_idx;
for (i = 0; i < n - 1; i++) {
max_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_idx]) {
max_idx = j;
}
}
// 将找到的最大元素与当前位置交换
int temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
int main()
{
int i, n;
int arr[10] = {23, 4, 56, 77, 12, 45, 89, 34, 67, 90};
n = sizeof(arr) / sizeof(arr[0]);
// 输出排序前的列表
printf("排序前:
");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("
");
// 调用选择排序函数
selection_sort(arr, n);
// 输出排序后的列表
printf("排序后:
");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
选排序流程图:
随机产生十个10-100的整数,用选择排序法按值从小到大顺序排序,我是学VB...
For i = 0 To 9 arr(i) = Int(Rnd * 91) + 10 Next i SelectSort arr For i = 0 To 9 Print arr(i);Next i Print End Sub Public Sub SelectSort(ByRef a, Optional ByVal Left, Optional ByVal Right)'选择排序 '基本思想是:每次选出第i小的记录,放在第i个位置。'i的起点...
c++10个整数进行排序
}\/\/一种10个数,沉下去9个最大的数,就可以排序了 for(i=0;i<10;i++){ cout<<a[i]<<'\\t';} cout<<endl;return 0;} 分析:通过两两比较,第一次排序,会将最大的数88放到最后面a[9]中。。。第九趟,a[1]=2,然后就排序完成 选择排序法 原理:选择排序的基本思想是:每一趟在...
一道pascal题:输入10个正整数,将这10个数字按从大到小的顺序排列_百度...
桶排序的思想是若待排序的记录的关键字在一个明显有限范围内(整型)时,可设计有限个有序桶,每个桶装入一个值,顺序输出各桶的值,将得到有序的序列。例:...当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序...
输入20个整数,用选择法(冒泡法),对整数排列。从小到大
include<stdio.h> main(){ int a[20],i,j,temp;for(i=0;i<20;i++)scanf("%d",&a[i]);for(i=0;i<20;i++)for(j=i+1;j<20;j++)if(a[i]>a[j]) { temp=a[i];a[i]=a[j];a[j]=temp;} for(i=0;i<20;i++)printf("%d\\t",a[i]);printf("\\n");} ...
C语言:下面程序使用选择排序方法对20个整数进行排序,这20个数从键盘输 ...
2015-01-02 使用C语言用简单选择法对20个整数排序 2015-05-17 C语言编程题:用选择法对10个整数排序 95 2014-02-05 c语言。使用冒泡法,对输入的20个整数从小到大进行排序。20... 1 2013-06-03 C语言 用冒泡法对20个整数进行排序(升序)。 17 更多...
c语言:“不能在赋值语句中通过赋值运算符‘=’对字符型数组进行整体赋值...
char s[5]="asdf";这句不是赋值而是初始化;讲的赋值语句是在程序执行中的赋值,就像 int a;int b;b=a; 这是赋值;对于字符而言,要赋值就要采用strcpy(s1,s2)这个函数。
求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
注意:(1)交换排序:参照求最大值和最小值的思想,按升序排序的基本过程是将第一个数字与下一个数字进行比较。如果后面的数字很小,那么交换和第一个数字的位置。否则,不要交换。(2)气泡排序:交换和重复两个相邻数字的过程。一般来说,如果有n个数字要排序,则需要n-1起泡。(3)选择排序:...
利用随机函数产生10个【1,100】的随机整数 (1) 打印这10个数 (2...
Private Sub Command1_Click()Dim a(10)Randomize Print "随机产生10个[1,100]之间的整数"For i = 1 To 10 a(i) = Int(Rnd * 100)Print a(i);Next Print Print "使用选择排序法从大到小排序"For i = 1 To 10 For j = 1 To i If a(i) > a(j) Then t = a(i): a(i)...
c语言入门教学
如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]...
求一个输出菱形的c语言的流程图,“行”一个循环,然后把菱形分为上三角...
如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]...
阳妍茵白: #includefun(inta[10]) { int i,n,t; for(i=0;i<=10;i++) for(n=0;n<=10;n++) if(a[i] { t=a[i];a[i]=a[n];a[n]=t; } } main() { int a[10]; printf("排序后为%d"fun(a)); }
米东区13398749361: 用选择法对10个整数按由大到小顺序排序 - ?
阳妍茵白: sort(int x[],int n) { int i,j,k,t; //定义整型变量 i,j,k,t for(i=0;i<n-1;i++)//循环,从0到n-1 { k=i; //将i值赋给k for(j=i+1;j<n-1;j++) //子循环,从i+1到n-1 if(x[j]>x[k])k=j; //如果x[i]>[k] 则 将j的值赋给k if(k!=i) //如果 k 不等于 i {t=x[i];x[i]=x[k];x[k]=t;} //x[i]与x[k]交换值 } }
米东区13398749361: 用选择法对10个整数排序(由大到小) - ?
阳妍茵白: 选择法的原理是将每一个元素与他后面的元素分别比较,如果有比他大的,则交换,所以有2重循环,第一重是参加比较的元素,第二重是参加比较的元素分别与后面(这个记住,是他后面的元素,关键是后面二字)的元素分别比较 void sort(int ...
米东区13398749361: 选择法对10个整数按由大到小顺序排序 - ?
阳妍茵白: void sort(int x[],int n) { //下面这段代码i为什么要小于n-1?k=i是什么意思?j=i+1,j<n又是何意?麻烦讲讲以下//代码各字母表达含义..感谢!int i,j,k,t;for(i=0;i<n-1;i++) { //对于一个有n个元素的数组,选出了其中n-1个值,最后一个就是最小的,...
米东区13398749361: 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]) //这是由小到大排序 如果是大到小则改...
米东区13398749361: C语言 用选择法对10个整数按从大到小顺序排序 - ?
阳妍茵白: for(p=a,i=0;i<10;i++) { printf("%d",*p); p++; 少了“}” void sort(int x[],int n); 多了“;”
米东区13398749361: 从键盘上输入十个数用选择法将其按由大到小的顺序排列 - ?
阳妍茵白: #include<stdio.h> void main() { int a[11],n,i,j; printf("Please Input 10 Numbers:\n"); for(i=1;i<=10;i++) scanf("%d",&a[i]); for(i=2;i<=10;i++) { a[0]=a[i]; for(j=i-1;a[j]>a[0];j--) a[j+1]=a[j]; a[j+1]=a[0]; } for(i=1;i<=10;i++) printf("%d ",a[i]); printf("\n"); } 这是C语言的.
米东区13398749361: C语言 怎么样用选择法对10个整数排序? - ?
阳妍茵白: 选择法排序是一种简单的容易实现的对数据排序的算法.以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同).要求对其元素排序使之递增有序.首先以一个元素为基准,从一个方向开始扫描,比如从左至...
米东区13398749361: 2、 用选择法对10 个整数排序.10 个整数用scanf 函数输入.选择法的排序思想是从所有元素中选择一个最小元 - ?
阳妍茵白:[答案] #include "stdio.h" main() { \x09int a[10],i,j,t; \x09printf("输入10个整数\n"); \x09for(i=0;i
米东区13398749361: C语言:用选择法对数组中10个数按由大到小排序 - ?
阳妍茵白: #include "stdio.h" main() { int a[10]; int i,j,t; printf("输入1-100之间的10个数:"); for(i=0;i<10;i++) scanf("%d",a[i]); for(i=0;i<10;i++) for(j=0;j<10-i;j++) if(a[j]<a[j+1]) {t=a[j+1];a[j+1]=a[j];a[j]=t;} for(i=0;i<10;i++) printf("%d",a[i]); }