Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看870次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: [原创]c#快速排序类
张小峰
超级版主
UID: 14
来自:
精华: 4
积分: 313
帖子: 285
注册: 2007-8-23 10:27:00
状态: 离线
威望: 8.00
金钱: 75.55 元
只看楼主 2007-09-11 11:56
[原创]c#快速排序类
class QuickSort
    {
        private void Swap(ref int i, ref int j)
        {
            int t;
            t = i;
            i = j;
            j = t;
        }
        public void Sort(int[] list, int low, int high)
        {
            if (high <= low)
            {//only one element i array list
                //so it do not need sort
                return;
            }
            else if (high == low + 1)
            {
                if (list[low] > list[high])
                {
                    Swap(ref list[low], ref list[high]);
                    return;
                }
            }
            myQuickSort(list, low, high);
        }
        private void myQuickSort(int[] list, int low, int high)
        {
            if (low < high)
            {
                int pivot = Partition(list, low, high);
                myQuickSort(list, low, pivot - 1);
                myQuickSort(list, pivot + 1, high);
            }
        }
        private int Partition(int[] list, int low, int high)
        {
            int pivot;
            pivot = list[low];
            while (low < high)
            {
                while(low <high&&list[high]>=pivot)
                {
                    high--;
                }
                if(low!=high)
                {
                    Swap(ref list[low], ref list[high]);
                    low++;
                }
                while(low<high&&list[low]<=pivot)
                {
                    low++;
                }
                if(low!=high)
                {
                    Swap(ref list[low], ref list[high]);
                    high--;
                }
            }
            return low;
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            QuickSort quick = new QuickSort();
            int[] arr = new int[] {4,5,1,9,6,3,2,8,7 };
            quick.Sort(arr, 0, 8);
            foreach (int a in arr)
            {
                Console.WriteLine(a);
            }
            Console.ReadLine();
        }
       
    }
#1  
发表新主题 回复该主题
本主题被查看870次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-10-12 00:31:11

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.128 seconds