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);//交换最小元素到当前起始位置。
    }
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-01-19
这是选择排序。先用a[0]与a[1]比较,当a[0]<a[1]时并不交换,而用k记下来现在a[0]最小……这样一趟比较完后a[k]就是整个数组中最小的元素,把它与a[0]交换;第二趟,从a[1]开始重复前面的操作,那么最后a[1]就是剩下的n-1个元素中最小的……看a[0]、a[1]已经由小到大排好了,当做完n-1趟时不就把整个数组都排好了吗?注意:t=array[k];array[k]=array[i];array[i]=t;不是for(j=i+1;j<n;j++)的循环体,要等它循环完了后才执行一次。
第2个回答  2015-09-09
每次选择没有排序元素中最小的排到前面
时间复杂度O(n^2)
空间复杂度O(n)
第3个回答  2006-11-27
首先从要选择的数中选择最大的数,将它放在第一个位置,然后从剩下的数中选择最大的数放在第二个位置,直到最后从剩下的两个数中选择最大的数放在倒数第二个位置,剩下的一个数放在最后位置,完成排序。

这类问题你用搜索器搜一下就有上千上万篇!!
第4个回答  2006-11-27
就像这样啊~输入10个数进行排序
main()

{int*p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

p=a

sort(p,10);

for(p=a,i=0;i<10;i++)

{printf("%d",*p);p++;}

}

sort(int x[ ],int n)

{int i,,j,k,t;

for(i=0;i<n-1;i++)

{k=i;

for(j=i+1;j<n;j++)

if(x[j]>x[k]) k=j;

if(k!=i)

{t=x[i];x[i]=x[k];x[k]=t;}

}

}本回答被提问者采纳

C语言中的选择排序法是什么?
选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。以下是一个实现选择排序的例子:define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t)) \/\/将...

选择排序法C语言问题
选择排序法是将第一个数默认为最小值,然后将它后面的数和它进行比较,如果有数比它小,用min_k记录这个较小数的下标,min等于这个数,然后接着向后比较,(注意后面的数一直和min比较)一直到最后一个数也比较完,这时i=n,min记录的时最小的数的值,min_k记录最小值的下标,接着进行交换,( x...

c语言 选择法排序
选择法就是找出最小或最大的放在头上,然后从剩下的部分中重复这个过程:1:i循环,对a[1]到a[9]这九个数 2:i循环开始 3:假设a[i]为最小,保存i到min 4:j循环,对a[i+1]到a[10]这些数 6:j循环开始 7:判断a[min]是否大于a[j]8:条件语句开始 9:条件成立,则说明当前的最小...

C语言 Selection Sort
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。#includeint ...

选择法排序
选择法排序是一种简单的容易实现的对数据排序的算法,以整形数组元素为例,有数组A[10],即A[0],A[1]…A[8],A[9](假设其元素均互不相同),要求对其元素排序使之递增有序。首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准,接下来从A[0]…A[9]中找出最...

c语言中的选择法是什么意思?在程序中用数组大小比较算选择法吗?
选择法是c中对数组进行排序的一种方法。以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。接下来从A[0],…...

C语言中冒泡排序法和选择排序法有哪些不同
选择排序:1>.对于选择排序,首先理解排序的思想。给定一个数组,这种思想首先假定数组的首元素为最大(最小)的。此时就要利用3个变量i,j,k表示元素的下标。i表示当前,j表示找到的最大(最小)的下标,k用于存放每次循环中最大值的下标。2>.在掌握了程序的基本思想之后,再进行排序。找到最大的...

求c语言选择排序法和 冒泡排序法代码!
应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序 1、排序方法 将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个...

c语言的两种排序?
1、选择排序法 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 代码:include<stdio.h> int main(int argc,const char*argv[]){ int num[10],i,j,k,l,temp;\/\/用一个数组保存输入的数据 for(i=0;i<=9;i++){ scanf(...

C语言大牛推荐七大排序算法学生来看
C语言7种排序算法附代码 1.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换它们两个对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数:针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。2.选择排序 在未排席序列中...

相似回答