33排序算法之选择排序

排序算法之选择排序

 

原理:从n个元素中选出一个最大元素,调到序列末端再从剩下的n-1个元素中选出最大元素……,反复如此,可完成排序。

 

简单选择算法:

for(k=n-1;k>0;k - -)

  {

    i=0;

    for(j=1;j<=k;j++) if(a[j]>a[i])  i=j;  //选最大元

    交换a[k]与a[i];

  }

 

实质就是,每次选择最大的值放在前面。第一个最大放在第一位,第二个大的值放在第二位。。。。。。后面的值依次排序。

 

选择排序源代码:
//2选择排序(由位置选择数)
void SelectionSort(int *arr,int num)
{
    int i,j;
    for(i=0;i<num;++i)//先选好位置,再选数字
    {
        for(j=i+1;j<num;++j)//比较,小数放第1位,第2位.。。。。。
        {
            if(arr[i]>arr[j])
            {
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            };
        };


int main()
{
    int arr[10]={3,5,8,2,4,13,9,1,16,7};
    SelectionSort(arr,10);
    for(int i=0;i<10;++i)
        printf("%d ",arr[i]);
    getchar();
    return 0;
}

 

posted @ 2018-03-05 16:44  gd_沐辰  阅读(156)  评论(0编辑  收藏  举报