• 基础算法之选择排序


    选择排序的思路比较简单,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

    选择排序虽然实现起来比较简单,但是效率也比较低, 为O(n2)。

    C语言的代码实现如下 :

     1 //选择排序的C语言实现
     2 void selection_sort(int a[])
     3 {
     4     int i , j;
     5     int min = 0;
     6     for(i=0; i<MAXSIZE-1; i++)
     7     {
     8         for(j=i; j<MAXSIZE; j++)
     9         {
    10             if(a[j] <= a[min]) {
    11                 min = j;
    12             }
    13         }
    14         swap(a, i, min);
    15     }
    16 }

    一个简单的测试用例:

    #include<stdio.h>
    
    #define MAXSIZE 10
    
    void selection_sort(int a[]);
    void swap(int a[], int i, int j);
    
    //选择排序的C语言实现
    void selection_sort(int a[])
    {
        int i , j;
        int min = 0;
        for(i=0; i<MAXSIZE-1; i++)
        {
            for(j=i; j<MAXSIZE; j++)
            {
                if(a[j] <= a[min]) {
                    min = j;
                }
            }
            swap(a, i, min);
        }
    }
    
    void swap(int a[], int i, int j)
    {
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
    
    int main()
    {
        int a[MAXSIZE];
        int i;
        printf("Please input the num:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            scanf("%d",&a[i]);
        }
        printf("before the sort:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            printf("%d ", a[i]);
        }
        printf("
    ");
        
        selection_sort(a);
    
        printf("after the sort:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            printf("%d ", a[i]);
        }
        printf("
    ");
    }
    View Code
  • 相关阅读:
    mysql 行转列 列转行
    JAVA中使用JSch库实现SSH功能
    sqlmap详解
    Max+Decode的妙用.(紀錄分組).
    apache mina sshd ,纯java的ssh工具包
    Nginx 日志分析及性能排查
    PHP在Apache中两种工作方式的区别(CGI模式、Apache 模块DLL)
    如何将本地做好的网站挂到服务器上
    Drupal
    程序员的十种级别,
  • 原文地址:https://www.cnblogs.com/beyond-Acm/p/4384686.html
Copyright © 2020-2023  润新知