zoukankan      html  css  js  c++  java
  • 基本排序算法

          没有过多的说明,只为将来可能会用到的日子,能拿来做参考。

    1、冒泡(Bubble)

            7 5 2 1 5 9
            5 7 2 1 5 9
            5 2 7 1 5 9
            5 2 1 7 5 9
            5 2 1 5 7 9

            2 5 1 5 7 9
            2 1 5 5 7 9
            2 1 5 5 7 9

            1 2 5 5 7 9

    复制代码
            public static void BubbleSort(int[] a)
            {
                int n = a.Length - 1;//个数
                int i, j;//用于控制循环
                int tmp;//中间变量
                bool isChange;//记录冒泡一轮下来是否发生交换(如果没有发生交换证明已排好序)
                for (i = 0; i < n; i++)
                {
                    isChange = false;
                    for (j = 0; j < n - i; j++)//每轮冒泡过后要对比的数就少一个
                    {
                        if (a[j] > a[j + 1])//大的数向上冒
                        {
                            tmp = a[j];
                            a[j] = a[j + 1];
                            a[j + 1] = tmp;
                            isChange = true;
                        }
                    }
                    if (!isChange)
                    {
                        return;
                    }
    
                }
                return;
            }
    复制代码

    2、直接插入(Insert)

            7 5 2 1 5 9
            5 7 2 1 5 9
            2 5 7 1 5 9
            1 2 5 7 5 9
            1 2 5 5 7 9

    复制代码
            public static void InsertSort(int[] a)
            {
                int n = a.Length;
                for (int i = 1; i < n; i++)//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分
                {
                    int temp = a[i];//temp标记为未排序第一个元素
                    int j = i - 1;
                    while (j >= 0 && a[j] > temp)//将temp与已排序元素从小到大比较,寻找temp应插入的位置
                    {
                        a[j + 1] = a[j];
                        j--;
                    }
                    a[j + 1] = temp;
                }
            }
    复制代码

    3、直接选择(Select)

            7 5 2 1 5 9
            1 5 2 7 5 9
            1 2 5 7 5 9
            1 2 5 7 5 9
            1 2 5 5 7 9

    复制代码
            public static void SelectSort(int[] a)
            {
                int n = a.Length;//个数
                int i, j;
                int tmp;
                int b;
                for (i = 0; i < n - 1; i++)
                {
                    tmp = i;
                    for (j = i + 1; j < n; j++)
                    {
                        if (a[tmp] > a[j])//每轮找到最小的元素
                            tmp = j;
                    }
                    if (i != tmp)
                    {
                        b = a[tmp];
                        a[tmp] = a[i];
                        a[i] = b;
                    }
                }
            }
    复制代码

    4、快速(Quick)

            7       5 2 1 5 9
            5   2 1 5     7 9
            2 1 5   5     7 9
            1 2 5   5     7 9

    View Code

    5、希尔(Shell)

            7 5 2 1 5 9
            7 5 2   1 5 9
            7 5   2   1 5  9
            5 7   2   1 5  9
            2 5   7   1 5  9
            2 5 7   1 5 9
            1 2 5 7 5 9
            1 2 5 5 7 9

    View Code

    6、归并(Merge)

            7 5 2 1 5 9
            7 5 2    1 5 9
            7   5 2   1   5 9
            7   2 5   1   5 9
            2 5 7    1 5 9
            1 2 5 5 7 9

    View Code

    7、堆(Heap)

            7 5 2 1 5 9
                7
               /
              5   2
             / /
             1 5 9

                9
               /
              5   7
             / /
             1 5 2

    View Code
    转自:http://www.cnblogs.com/tim-li/p/3327895.html
  • 相关阅读:
    Windows Server 2008取消登录前的Ctrl+Alt+Delete组合键操作
    Kali Linux远程连接Windows服务器
    Kali Linux虚拟机安装完整安装过程及简单配置(视频)
    Kali Linux中下载工具Axel的安装和使用
    2017年Kali Linux更新源
    解决VMware虚拟机报错“无法连接MKS:套接字连接尝试次数太多,正在放弃”
    .deb软件包的安装和软件的卸载
    解决C语言程序报错:return type defaults to‘int’
    解决BackBox中Fcitx输入法中文输入状态下不显示候选词框的问题
    导航狗信息导航网站首页源代码(2017年11月03日版)
  • 原文地址:https://www.cnblogs.com/double405/p/5144700.html
Copyright © 2011-2022 走看看