黑马程序员技术交流社区

标题: 求解快速排序问题 [打印本页]

作者: 马山闪    时间: 2014-4-1 18:39
标题: 求解快速排序问题
本帖最后由 马山闪 于 2014-4-3 09:44 编辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _02快速排序
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = { 1, 3, 4, 7, 2, 7, 9, 0, -13 };
            Sort(array, 0, array.Length - 1);
            foreach (var item in array)
            {
                Console.Write(item + " ");
            }
            Console.ReadKey();
        }
        public static int GetIndex(int[] array, int left, int right)
        {
            //这里的算法是从最左边开始算的
            int temp = array[left];//temp为基准值
            while (left < right)
            {
                for (int i = right; i >= left; i--)//从右边开始比较
                {
                    if (array < temp)
                    {
                        array[left] = array;
                        break;
                    }
                }
               
                for (int i = left; i < right; i++)//从左边开始比较
                {
                    if (array > temp)
                    {
                        array[right] = array;
                        break;
                    }
                }
               
                right--;
                left++;
               
            }

            array[left] = temp;
            return left ;
        }
        public static void Sort(int[] array, int left, int right)
        {
            if (left < right)
            {
                //按基准值分成两个数组再继续排序
                int temp = GetIndex(array, left, right);
                Sort(array, left, temp - 1);
                Sort(array, temp + 1, right);
            }
        }
    }
}

作者: 马山闪    时间: 2014-4-1 18:41
纠结了好久,不知道哪个地方错了,输出的是这样

20140401184036.png (6.36 KB, 下载次数: 33)

20140401184036.png

作者: 马山闪    时间: 2014-4-3 09:44
好吧,自己最后弄出来了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2