zoukankan      html  css  js  c++  java
  • 各种排序算法汇集

    View Code
            private void Sort1(int[] list)//冒泡排序
            {
                //从第一个字符向后冒泡亮亮比较获取最大值放在最后
                //第一次循环首先得到一个最大值;第二次循环得到第二大值
                int i, j, temp;
                bool done = false;
                j = 1;
                while ((j < list.Length) && (!done))
                {
                    done = true;
                    for (i = 0; i < list.Length - j; i++)
                    {
                        if (list[i] > list[i + 1])
                        {
                            done = false;
                            temp = list[i];
                            list[i] = list[i + 1];
                            list[i + 1] = temp;
                        }
                    }
                    j++;
                }
            }
            //选择排序
            //向后冒泡获取最小值的索引,然后和第i个值进行数据交换
            private void Sort2(int[] list)
            {
                int minIndex = 0;
                for (int i = 0; i < list.Length; i++)
                {
                    minIndex = i;
                    for (int j = i; j < list.Length; j++)
                    {
                        if (list[j] < list[minIndex])
                        {
                            minIndex = j;
                        }
                    }
                    int temp = list[i];
                    list[i] = list[minIndex];
                    list[minIndex] = temp;
                }
            }
            //插入排序
            //此种算法是首先循环第二个元素,让第二个元素和第一个元素比较,如果i+1<i,交换。
            //然后依次进行,如果是循环第i个元素,i索引的数据将会和前边所有的数据进行比较,如果i索引数据小于后边的数据,则继续下去知道最后一个进行替换,否则跳出继续下一个;
    
            private void Sort3(int[] list)
            {
                for (int i = 1; i < list.Length; i++)
                {
                    int t = list[i];
                    for (int j = i; j > 0; j--)
                    {
                        if (list[j - 1] > t)
                        {
                            list[j] = list[j - 1];
                            list[j - 1] = t;
                        }
                    }
                }
            }
            private void Sort4(int[] list)//希尔排序
            {
                //list.Length=25;
                int inc;
                for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
                for (; inc > 0; inc = inc / 3)
                {
                    for (int i = inc + 1; i <= list.Length; i += inc)
                    {
                        int t = list[i - 1];
                        int j = i;
                        while ((j > inc) && (list[j - inc - 1] > t))
                        {
                            list[j - 1] = list[j - inc - 1];
                            j -= inc;
                        }
                        list[j - 1] = t;
                    }
                }
            }
            //快速排序
            private void quick_sort(int[] s, int l, int r)
            {
                if (l < r)
                {
                    int i = l, j = r, data = s[l];
                    while (i < j)
                    {
                        while (i < j && s[j] >= data) // 从右向左找第一个小于x的数
                        {
                            j--;
                        }
                        if (i < j)
                        {
                            s[i] = s[j];
                            i++;
                        }
    
                        while (i < j && s[i] < data) // 从左向右找第一个大于等于x的数
                        {
                            i++;
                        }
                        if (i < j)
                        {
                            s[j] = s[i];
                            j--;
                        }
                    }
                    s[i] = data;//第一次循环获取的是左边的数据都比data小的数据,右边的大于data的数据
                    quick_sort(s, l, i - 1); // 递归调用
                    quick_sort(s, i + 1, r);
                }
            }
  • 相关阅读:
    SOFA 源码分析 — 自动故障剔除
    Pod——状态和生命周期管理及探针和资源限制
    pause的作用
    k8s-部署策略
    linux-删除一个目录下的所有文件,但保留某个或者多个指定文件
    k8s-gitlab搭建
    git中报unable to auto-detect email address 错误的解决拌办法
    k8s-secret用法
    k8s-traefik默认80端口
    nginx和apache区别
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/2650762.html
Copyright © 2011-2022 走看看