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

    class Sort//排序算法总结
        {

            /// <summary>
            /// 冒泡排序算法。下面一个方法存在一个缺陷。当排好序后还会进行循环
            /// (注释:两两一比较前面的比后面的大就交换)
            /// </summary>
            /// <param name="array"></param>
            public void BubbleSort(int[] array)
            {
                int i, j, temp;

                for (i = 0; i < array.Length; i++)
                {
                    for ( j = 0; j < array.Length-1; j++)
                    {
                        if (array[j] > array[j + 1])
                        {
                            temp = array[j];
                            array[j] = array[j + 1];
                            array[j + 1] = temp;
                        }
                    }
                }
            }
            /// <summary>
            /// 直接插入排序法
            /// (注:假定第一个数是一个排序好的数组,然后依次取出后面一个数插入
            /// 到排好序的数组中前面排好序的数组递增后面数组递减)
            /// </summary>
            public void InsertSort(int[] array)
            {
                int i, j, temp;
                for ( i = 1; i < array.Length; i++)
                {
                    if (array[i] < array[i - 1])
                    {
                        temp = array[i];
                        for (j = i - 1; j >= 0 && temp < array[j]; j--)
                        {
                            array[j+1]=array[j];//已经吧后面取出的数算在了前面数组中。类似冒泡排序把它向前冒泡到合适位置
                          
                        }
                        array[j + 1] = temp;
                    }
                }
     
            }
            /// <summary>
            /// 快速排序算法
            /// </summary>
            /// <param name="array"></param>
            /// <param name="low"></param>
            /// <param name="high"></param>
            public void QuickSort(int[] array,int low,int high)
            {
                int i = low;
                int j = high;
                int key=array[i];
              while (i < j)
              {
                  while (array[j] > key)
                  {
                      j--;
                  }
                  array[i] = array[j];
                  while (array[i] < key)
                  {
                      i++;
                  }
                  array[j] = array[i];
              }
              array[i] = key;
              if (low<i-1)
              {
                  QuickSort(array, i,low - 1);
              }
              if (high > j + 1)
              {
                  QuickSort(array, low + 1, high);
              }
            }
            /// <summary>
            /// 选择排序算法
            /// (注:从后面选出最小的一个数插入到前面的数组里)
            /// </summary>
            /// <param name="array"></param>
            public void SelectionSort(int[] array)
            {
                int min=0;
                for (int i = 0; i < array.Length - 1; i++)
                {
                    min = i;
                    for (int j = i+1; j < array.Length ; j++)
                    {
                        if (array[j] < array[min])
                        {
                            min = j;
                        }
                    }
                    int temp = array[i];
                    array[i] = array[min];
                    array[min] = temp;
                }
            }

  • 相关阅读:
    stm32f103串口实现映射功能
    Who is YaoGe.(搞笑篇)
    hdoj-2066-一个人的旅行(迪杰斯特拉)
    Webpack 性能优化 (一)(使用别名做重定向)
    How Visual Studio 2012 Avoids Prompts for Source
    HDU 4031 Attack
    js实现的省市联动
    Java几种单例模式的实现与利弊
    python项目实现配置统一管理的方法
    我的AI之路 —— OCR文字识别快速体验版
  • 原文地址:https://www.cnblogs.com/liubaolongcool/p/1951830.html
Copyright © 2011-2022 走看看