生活
选择法排序 、c语言选择法排序
2023-04-18 01:15  浏览:34

通过函数实现选择法排序. 选择法排序的函数原型为?

您好!很高兴为您解答问题,以下是我为您提供的解答内容:

#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语言选择法排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发表评论
0评