【算法练习题】排序合集

冒泡排序:

static void Main(string[] args)
{
    /*
     * 冒泡排序
     * 输入: 9,2,6,4,67,23,1,4,30
     * 输出:1,2,4,4,6,9,23,30,67
     * */

    //升序
    int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
    for(int i = 0; i < array.Length - 1; i++)
    {
        for(int j = 0; j < array.Length - i - 1; j++)
        {
            if(array[j] > array[j + 1])
            {
                int temp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = temp;
            }
        }
    }
    //输出
    Console.Write("Ascending sorted array is: ");
    for(int i = 0; i < array.Length; i++)
    {
        Console.Write("{0},",array[i]);
    }
}

插入排序:

static void Main(string[] args)
{
    /*
     * 插入排序
     * 输入: 9,2,6,4,67,23,1,4,30
     * 输出:1,2,4,4,6,9,23,30,67
     * */

    //升序
    int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
    for(int i = 1; i < array.Length; i++)
    { 
        int key = array[i];
        int j = i - 1;
        while(j >= 0 && key < array[j])
        { 
            array[j + 1] = array[j];
            j--;
        }
        array[j + 1] = key; 
    }
    //输出
    Console.Write("Ascending sorted array is: ");
    for(int i = 0; i < array.Length; i++)
    {
        Console.Write("{0},",array[i]);
    }
}

快速排序:

static Int64 steps = 0;
static void Main(string[] args)
{
    /*
        * 快速排序
        * 输入: 9,2,6,4,67,23,1,4,30
        * 输出:1,2,4,4,6,9,23,30,67
        * */

    //升序
    int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
    FastSorting(array, 0, array.Length-1);
    //输出
    Console.Write("Ascending sorted array is: ");
    for (int i = 0; i < array.Length; i++)
    {
        Console.Write("{0},", array[i]);
    } 
    Console.Write(" Total steps is:{0} \r\n", steps);
}

static void FastSorting(int[] array, int start, int end)
{
    if(start < end)
    {
        int mid = start + (end - start) / 2;
        for(int i = mid + 1; i <=  end; i++)
        {
            steps++;
            if(array[mid] >= array[i])
            {
                int temp = array[mid];
                array[mid] = array[i];
                array[i] = array[mid + 1];
                array[mid + 1] = temp;
                mid++;  
            }
        }
        for(int i = mid - 1; i >= start; i--)
        {
            steps++;
            if(array[mid] <= array[i])
            {
                int temp = array[mid];
                array[mid] = array[i];
                array[i] = array[mid -1];
                array[mid -1] = temp;
                mid--;
            }
        }
        FastSorting(array, mid + 1, end);
        FastSorting(array, start, mid - 1);
    }
}
此条目发表在文章, 算法分类目录。将固定链接加入收藏夹。

发表评论