C# 四种排序(没有写希尔排序)

 protected void Page_Load(object sender, EventArgs e)
    {

    }
    //它的原理就是相邻的两个两个的比较,如果前面的数比后面的大,那么交换,它这个在比较完一次的时候可以得到最大的一个数,然后接着循环,每次外循环中内循环的次数比原来少一次。
    protected void btn_MaoPao_Click(object sender, EventArgs e)
    {
        int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length - i - 1; j++)
            {
                if (arr[j] > arr[j + 1])
                {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for (int k = 0; k < arr.Length; k++)
        {
            Response.Write(arr[k].ToString() + "<br />");
        }
    }
    //选择排序  向后冒泡获取最小值得索引保存最小值MinIndex  ,然后和第i个值进行数据交换
    protected void btn_Select_Click(object sender, EventArgs e)
    {
        int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
        int minIndex = 0;
        for (int i = 0; i < arr.Length; i++)
        {
            minIndex = i;
            for (int j = i; j < arr.Length; j++)
            {
                if (arr[j] < arr[minIndex])
                {
                    minIndex = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        for (int k = 0; k < arr.Length; k++)
        {
            Response.Write(arr[k].ToString() + "<br />");
        }
    }
    //插入排序
    //此种算法是一次循环每一个元素,然后在每一个为基值再一次循环小于基值的每一个元素,
    protected void btn_Insert_Click(object sender, EventArgs e)
    {
        int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
        for (int i = 0; i < arr.Length; i++)
        {
            int temp = arr[i];
            int j = i;
            while (j > 0 && arr[j - 1] > temp)
            {
                arr[j] = arr[j - 1];
                --j;
            }
            arr[j] = temp;
        }
        for (int k = 0; k < arr.Length; k++)
        {
            Response.Write(arr[k].ToString() + "<br />");
        }
    }
    protected void btn_Fast_Click(object sender, EventArgs e)
    {
        int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
        quick_sort(arr, 0, arr.Length - 1);
        for (int k = 0; k < arr.Length; k++)
        {
            Response.Write(arr[k].ToString() + "<br />");
        }
    }
    //快速排序   //从右向左找第一个小于x的数   //从左向右找第 一个大于x的数
    private void quick_sort(int[] s, int l, int r)
    {
         if (l < r)
        {
            int i = l, j = r, x = s[l];
            while (i < j)
            {
                while (i < j && s[j] >= x)//从右向左找第一个小于x的数
                {
                    j--;
                }
                if (i < j)
                {
                    s[i] = s[j];
                    i++;
                }
                while (i < j && s[i] < x)//从左向右找第 一个大于x的数
                {
                    i++;
                }
                if (i < j)
                {
                    s[j] = s[i];
                    j--;
                }
            }
            s[i] = x;
            quick_sort(s, l, i - 1);
            quick_sort(s, i + 1, r);
        }
原文地址:https://www.cnblogs.com/TNSSTAR/p/2955660.html