C# -简单的排序方法:选择排序、快速排序、直接插入排序

      //C#  快速排序
  #region  快速排序
        static void QuickSort(int[] array, int left,int right) 
        {
            if (left < right) 
            {
                int x = array[left];
                int i = left;
                int j = right;

                while (i < j) 
                {
                    while (i < j)
                    {
                        if (x < array[j])
                        {
                            j--;
                        }
                        else
                        {
                            array[i] = array[j];
                            break;
                        }
                    }

                    while (i < j)
                    {
                        if (x > array[i])
                        {
                            i++;
                        }
                        else
                        {
                            array[j] = array[i];
                            break;
                        }
                    }
                }
                array[i] = x;
                QuickSort(array,left,i-1);
                QuickSort(array,i+1,right);
            }
        }
        #endregion



//直接插入排序

#region 直接排序
        static void InsertSort(int[] array)
        {
            for (int i = 1; i < array.Length; i++)
            {
                int iVaule = array[i];
                bool isInsert = false; //是否插入
                for (int j = i - 1; j >= 0; j--)
                {
                    if (array[j] > iVaule)
                    {
                        array[j + 1] = array[j];
                    }
                    else
                    {
                        array[j+1] = iVaule;
                        isInsert = true;
                        break;
                    }
                }
                if (isInsert == false)
                {
                    array[0] = iVaule; //array[i]比前面都小,插入第一个
                }
            }
        }
        #endregion

//选择排序
//选取一个数组中最小的值,与数组第一个值比较,
//然后从不包括第一个位置的值中选取最小值,与与数组第2个值比较,以此类推
//直到序列只剩下一个值为止
#region 选择排序
        static void SelectSort(int[] array)
        {
            for (int i = 0; i < array.Length - 1; i++)
            {
                int min = array[i];// 最小数
                int index = i;//记录最小数的下标
                for (int j = i+1; j < array.Length; j++)
                {                    if (array[j] < min)
                    {
                        min = array[j];
                        index = j;
                    }
                }
                if (min != array[i])
                {
                    int temp = array[i];
                    array[i] = array[index];
                    array[index] = temp;
                }
            }
        }
        #endregion

 

你可能感兴趣的:(C#数据结构,C#数据结构)