发布网友 发布时间:2022-04-22 05:46
共5个回答
热心网友 时间:2023-07-07 11:42
1、打开visual C++ 6.0,准备一个空白的c语言文件,引入头文件,在main函数中定义变量和数组:
2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:
3、编译运行程序,输入任意的10个数,回车后即可看到排序后的结果。以上就是c语言中选择排序的用法:
热心网友 时间:2023-07-07 11:42
用选择法对10个整数递增排序。10个整数用scanf函数输入
选择法:假设集合A有n个元素,按以下算法完成递增排序:
(1)\x05以一个元素为基准,从一个方向开始扫描,比如以A[0]为基准,从左至右扫描;
(2)\x05用A[0]右边的A[1]-A[n-1]与A[0]比较,找出最小的元素,将其与A[0]交换;
(3)\x05将基准位置右移一位,即移到A[1],重复(1)和(2)动作,比如,以A[1]为基准,找出A[1]-A[n-1]中最小的,将其与A[1]交换。一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
#include<stdio.h>
void 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 original numbers:\n");
for(i=1;i<=10;i++)
printf("%5d",a<i>);
printf("\n");
for(i=1;i<=9;i++)
{min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j])min=j;
temp=a<i>;
a<i>=a[min];
a[min]=temp;
}
printf("\nThe sored numbers;\n");
for(i=1;i<=10;i++)
printf("%5d",a<i>);
printf("\n");
}
选择排序每次找出所剩元素中最小(大)的值
void selectionSort(int arr[],int n)
{
for(int i=0;i<n;i++){
//寻找[i,n)区间的最小值
int minIndex=i;
for(int j=i+1;j<n;j++)
if(arr[j]<arr[minIndex])
minIndex=j;
swap(arr<i>,arr[minIndex]);
}
}
参考资料
百度百科——算法
热心网友 时间:2023-07-07 11:43
一、算法思想
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据有序。
选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。选择排序有简单选择排序、堆排序等多种算法。下面的分析、操作、程序均以简单选择排序算法为例进行讲解。
二、操作过程
初始状态: (49) 38 65 97 76 13 27 49 32 13三、参考程序
#include <stdio.h>四、运行测试
请输入10个数:热心网友 时间:2023-07-07 11:43
#include<stdio.h>
void main()
{
int i[10],a=0,b=0,temp,k;
printf("请输入十个整数:");
for(;a<10;a++)
scanf("%d",&i[a]);
for(a=0;a<9;a++)
{
k=a;
for(b=1;b<10-a;b++)
{ if(i[b]>i[k])
{k=b;}
}
if(k!=a)
{temp=i[a];i[a]=i[k];i[k]=temp; }
}
printf("从小到大排序:");
for(a=0;a<10;a++)
printf("%d\t",i[a]);
printf("\n");
}追问确定对了?
追答#include
int main()
{
int i[10],a=0,b=0,temp,k;
printf("请输入十个整数:");
for(;ai[k])
{k=b;}
}
if(k!=a)
{temp=i[a];i[a]=i[k];i[k]=temp; }
}
printf("从小到大排序:");
for(a=0;a<10;a++)
printf("%d\t",i[a]);
printf("\n");
}
确定对了
热心网友 时间:2023-07-07 11:44
#include<stdio.h>
void main()
{
int i[5],a=0,b=0,temp;
printf("请输入十个整数:");
for(;a<5;a++)
scanf("%d",&i[a]);
for(a=1;a<10;a++)
{
for(b=0;b<10-a;b++)
{
if(i[b]>i[b+1])
{
temp = i[b];
i[b] = i[b+1];
i[b+1] = temp;
}
}
}
printf("从小到大排序:");
for(a=0;a<10;a++)
printf("%d\t",i[a]);
printf("\n");
}