常用的几个排序算法

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;
            }
        }

原文地址:https://www.cnblogs.com/liubaolongcool/p/1951830.html