基础排序:选择排序

来源:互联网 发布:java能开发单片机吗 编辑:程序博客网 时间:2024/05/22 08:09

选择排序:
选中一个位置,让这个位置上的数和其他数比较,比较得到相对而言大的数或者小的数(按你的排序方式决定),再用一个变量去记录这个数的位置,然后再用这个数去和其他的数比较,从而更改位置,这样就可以得到比较的数中最大的或是最小的数的位置,然后把这个位置上的数和之前选中的位置上的数进行交换————这样是一个循环,第二个循环的时候把之前选中位置的数去除,也就是比较的时候不要包括在内,在进行一样操作,最后交换得到你想要的顺序;

代码:

#include<stdio.h>void swap(int *x,int *y){    int temp;    temp=*x;    *x=*y;    *y=temp;}void px(int a[],int n){    for(int i=0;i<n-1;i++)    {        int min=a[i],w=i;        for(int j=i;j<n;j++)            if(a[j]<min)            {                min=a[j];                w=j;            }        swap(&a[i],&a[w]);    }}void pr(int a[],int n){    for(int i=0;i<n;i++)        printf("%d ",a[i]);     printf("\n");}int main(){    const int n=10;    int a[n]={1,2,43,1,234,5,46,57,6,8};    px(a,n);    pr(a,n);    return 0; } 
原创粉丝点击