通过函数实现选择法排序. 选择法排序的函数原型为?
您好!很高兴为您解答问题,以下是我为您提供的解答内容:
#include stdio.h
void select_sort(int arr[], int n)
{
int i, j, t;
for (i = 0; i n - 1; i++)
for (j = i + 1; j n; j++)
if (arr[i] arr[j])
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
int main()
{
int i, n;
printf("请输入数组大小n:");
scanf("%d", n);
int a[n];
printf("请输入数组元素(用空格隔开):n");
for (i = 0; i n; i++)
scanf("%d", a[i]);
select_sort(a, n);
printf("排序后的数组为:n");
for (i = 0; i n; i++)
printf("%d ", a[i]);
printf("n");
return 0;
}
什么叫选择法排序?
选择排序法
是对
定位比较交换法
的一种改进。在讲选择排序法之前我们先来了解一下定位比较交换法。为了便于理解,设有10个数分别存在数组元素a[0]~a[9]中。定位比较交换法是由大到小依次定位a[0]~a[9]中恰当的值(和武林大会中的比武差不多),a[9]中放的自然是最小的数。如定位a[0],先假定a[0]中当前值是***数,a[0]与后面的元素一一比较,如果a[4]更大,则将a[0]、a[4]交换,a[0]已更新再与后面的a[5]~a[9]比较,如果a[8]还要大,则将a[0]、a[8]交换,a[0]又是新数,再与a[9]比较。一轮比完以后,a[0]就是***的数了,本次比武的武状元诞生了,接下来从a[1]开始,因为状元要休息了,再来一轮a[1]就是次大的数,也就是榜眼,然后从a[2]开始,比出探花,真成比武大会了,当比到a[8]以后,排序就完成了
c语言数组排序中的选择法是什么意思啊?
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中 选出 最小(或***)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。所以这种排序的方法叫选择法排序。
C语言参考实例:
#include stdio.h
void main()
{
int a[]={1,3,4,2,0} ;
int i,j,n=5;
for( i=0;in-1;i++ )
for( j=i+1;jn;j++ ) //每一遍都与当前a[i]比较
if ( a[i] a[j] ) //大的前移
{
int t=a[i];
a[i]=a[j];
a[j]=t ;
}
for( i=0;in;i++ )
printf("%d ", a[i] );
}
C语言中的选择排序法是什么?
选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或***)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
以下是一个实现选择排序的例子:
#define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t))
//将list中的n个数据,通过选择排序算法排序。
void selete_sort(int list[], int n)
{
int i, j, min, temp;
for (i = 0; i n - 1; i++){
min = i;
for (j = i + 1; j n; j++)//找出最小元素的下标。
if (list[j] list[min])
min = j;
SWAP(list[i], list[min], temp);//交换最小元素到当前起始位置。
}
}
怎么用选择法对10个整数进行排序?
选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组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 arr***[10];
//给数组初始化!
int i,j,k,temp;
for(i=0;i10-1;i++) {
k=i;
for(j=i+1;j10;j++)
if (arr***[j]arr***[k]) k="j" ;="" temp="arr***[k];arr***[k]=arr***;arr***=temp;" }="" }
关于选择法排序和c语言选择法排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。