zoukankan      html  css  js  c++  java
  • 常用排序算法

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

    注:动图是在网上找的。

    (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)其它算法

    后续补充

  • 相关阅读:
    Linux_MMU
    Linux_CPU寄存器简介
    Linux_数据段、代码段、堆栈段、BSS段的区别
    Linux_基本使用方法
    Linux_代码段和数据段的定义以及思考
    Linux_虚拟地址、线性地址和物理地址的转换
    Linux_微内核和单内核
    Linux_Linux的分段和分页机制
    教你实现一个朴实的Canvas时钟效果
    OpenMetric与时序数据库模型之主流TSDB分析
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/13211116.html
Copyright © 2011-2022 走看看