• 常用排序算法


    简述一些常用算法,并用代码实现它。

    注:动图是在网上找的。

    (1)冒泡排序

    核心思想:交换序列中相邻两个整数。

     测试代码:

     1 void bubble_sort(void)
     2 {
     3     /*
     4     * 冒泡排序:以降序为例进行说明
     5     * 比较相邻的元素,将值最小的元素交换到右边。
     6     */
     7     int a[] = {3, 4, 1, 5, 2};
     8     int i = 0, j = 0;
     9     int tmp;
    10 
    11     for (i = 0; i < sizeof(a)/sizeof(int); i++) {
    12         for (j = 0; j < sizeof(a)/sizeof(int) - i; j++) {
    13             if (a[j] < a[j+1]) {
    14                 tmp = a[j];
    15                 a[j] = a[j+1];
    16                 a[j+1] = tmp;
    17             }
    18         }
    19     }
    20     for (i = 0; i < sizeof(a)/sizeof(int); i++) {
    21         printf("%d	", a[i]);
    22     }
    23     printf("
    ");
    24 }

    运行结果:

    5       4       3       2       1

    (2)选择排序

    核心思想:每一趟在n-i+1 (i = 1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

    测试代码:

     1 void select_sort(void)
     2 {
     3     /*
     4     * 选择排序:每一趟在n-i+1 (i = 1,2,...,n-1)个记录中
     5     * 选取关键字最小的记录作为有序序列中第i个记录。
     6     */
     7     int a[] = {3, 4, 1, 5, 2};
     8     int i = 0, j = 0;
     9     int tmp;
    10 
    11     for (i = 0; i < sizeof(a)/sizeof(int); i++) {
    12         for (j = i+1; j < sizeof(a)/sizeof(int); j++) {
    13             //每次选择出最大的数,并放到前面去
    14             if (a[i] < a[j]) {
    15                 tmp = a[i];
    16                 a[i] = a[j];
    17                 a[j] = tmp;
    18             }
    19         }
    20     }
    21     for (i = 0; i < sizeof(a)/sizeof(int); i++) {
    22         printf("%d	", a[i]);
    23     }
    24     printf("
    ");
    25 }

    运行结果:

    5       4       3       2       1

    (3)其它算法

    后续补充

  • 相关阅读:
    解决点击状态栏时ScrollView自动滚动到初始位置失效办法
    如何设计用户、角色、权限表
    Subject的功能
    shiro授权的源码分析
    shiro之认证源码分析
    shiro配置
    JSONArray转JSONObject
    parameterType
    MyBatis:Parameter Maps collection does not contain value for 的问题解决
    mybatis报ORA-00911: 无效字符
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/13211116.html
Copyright © 2020-2023  润新知