C#二分法

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace QuickSortobj2

{

    class Program

    {

        static int Partition(int[] data, int left,int right)

        {

            int temp = data[left];

            int start = left - 1;

            int end = right + 1;

 

            while(start + 1 != end) 

            {

                if(data[start+1] <= temp)

                    start++;

                 else if(data[end-1] > temp)

                         end--;

                 else 

                    {

                      int tmp=data[start+1];

                      data[++start]=data[end-1];

                      data[--end]=tmp;

                    }

            }

            data[left] = data[start];

            data[start] = temp;

            return start;

        }

 

        static void Quicksort(int[] data, int left,int right)

        {

            int midIndex;

            if (left<right)

            {

                midIndex = Partition(data, left, right);

                Quicksort(data, left, midIndex - 1);

                Quicksort(data, midIndex + 1, right); //这两个就是递归调用,分别整理53左边的数组和右边的数组

            }

        }

        static void Main(string[] args)

        {

            int[] data = new int[10];//{1,56,25,32,41,20,10,30,75,59};

            for (int i = 0; i < data.Length; i++)

                data[i] = Convert.ToInt32(Console.ReadLine());

            Quicksort(data, 0, data.Length - 1);

 

            foreach (int i in data)

                Console.Write(" " + i);

            Console.ReadKey();

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值