Gear.Turbo

c#快速排序

昨天闭门造车,造出了二叉树的生成和遍历。今天继续造车,记得有次面试问我快速排序的算法。我当时想你们公司又不搞芯片设计啥的,干吗效率这么高?就做普通的一些管理软件,用现在的机器随便一个排序就够用了嘛!知道你们这叫啥?叫人才高消费!呵呵(葡萄酸)。: )当时只说了用递归和大体的思想,还真没实现过,今天经过一番造车,造出来了,不知道和传说中高人的快速算法有啥区别,也不清楚自己造的算不算快速排序呢。: )

using System;

namespace QuickSortTest
{
    
class QuickSort
    {
        
public void Sort(int[] data, int low, int high) //传数组就不用ref了吧?: )
        {
            
if (low >= high) return;
            
else if (low + 1 == high)
            {
                
if (data[low] > data[high])
                {
                    
int t = data[low];
                    data[low] 
= data[high];
                    data[high] 
= t;
                }
                
return;
            }
            
int p = low;
            
int flag = data[p];
            
int i = low;
            
int j = high;
            
while (i < j)   //从两头往中间走呗,大的放后面,小的放前面嘛!: )
            {
                
while (j > i && data[j] >= flag) j--;
                data[p] 
= data[j];
                data[j] 
= flag;
                p 
= j;
                
while (data[i] < flag) i++;        
                data[p] 
= data[i];
                data[i] 
= flag;
                p 
= i;
            }
            Sort(data, low, p 
-1);      //传说中的"分治"思想,前面代码只是把大的放后面
            Sort(data, p+1, high);      //小的放前面,然后在用同样的道理分而治之呗: )
        }
    }
    
class Program
    {
        
static void Main(string[] args)
        {
            
const int count = 100;
            
int[] data = new int[count];
            Random rnd 
= new Random();
            
for (int i = 0; i < count; i++)
            {
                data[i] 
= rnd.Next(100);
                Console.Write(
"{0}\t", data[i]);
            }

            Console.WriteLine(
"--------------------------------------------------------------------------");

            QuickSort qs 
= new QuickSort();
            qs.Sort(data, 
0, data.Length - 1);
            
for (int i = 0; i < count; i++)
                Console.Write(
"{0}\t", data[i]);
            Console.ReadLine();

        }
    }
}

posted on 2006-12-26 17:22  lsp  阅读(284)  评论(0)    收藏  举报

导航