排序算法小集

雪域幽狐 2004-03-12 19:52 阅读:6401


             排序是数据处理中经常使用的一种重要运算。
             设有{R1,R2,……Rn}是由n个记录组成的文件,其相应的关键集合为(K1,K2,……,Kn)。所谓排序就是将记录按关键码值不增(或不减)的次序排列起来。
             由于文件大小不同使排序过程中涉及的存储器不同,可分为内部排序和外部排序两类。
             整个排序过程都在内存进行的排序,称为内部排序,这是排序的基础。
             内排序的方法很多,下面介绍几类最常见的排序方法。



using System;


namespace NowFox
{
    public class Sorter
    {


        public void BubbleSort(int [] list)//冒泡排序
        {
            int i,j,temp;
            j=1;
            while(j<list.Length)
            {
                for(i=0;i<list.Length-j;i++)
                {
                    if(list[i]>list[i+1])
                    {
                        temp=list[i];
                        list[i]=list[i+1];
                        list[i+1]=temp;
                    }
                }
                j++;
            }
        }


        public void SelectionSort(int[] list)//选择排序
        {
            int i,j,temp;
            for(i=0;i<list.Length-1;i++)
            {
                for(j=i+1;j<list.Length;j++)
                {
                    if(list[i]>list[j])
                    {
                        temp=list[i];
                        list[i]=list[j];
                        list[j]=temp;
                    }
                }
            }
        }


        public void InsertionSort(int[] list)//插入排序
        {
            for(int i=1;i<list.Length;i++)
            {
                int temp=list[i];
                int j=i;
                while((j>0)&&(list[j-1]>temp))
                {
                    list[j]=list[j-1];
                    j--;
                }
                list[j]=temp;
            }
        }
        
        public void ShellSort(int[] list)//希尔排序
        {
            int inc;
            for(inc=1;inc<=list.Length/9;inc=3*inc+1);
            for(;inc>0;inc/=3)
            {
                for(int i=inc+1;i<=list.Length;i+=inc)
                {
                    int temp=list[i-1];
                    int j=i;
                    while((j>inc)&&(list[j-inc-1]>temp))
                    {
                        list[j-1]=list[j-inc-1];
                        j-=inc;
                    }
                    list[j-1]=temp;
                }
            }
        }
    }
}


1条评论

admin110 2004-08-12 17:12
什么意思啊。看不懂[em7]

登陆后可评论