梦幻家居 梦幻家居 设为首页
收藏本站
关于本站

梦幻家居网站建设 → 排序算法小集

您是本帖第2948位阅读者     
贴子主题 
雪域幽狐


头衔: 社区理事长
梦幻币: 10470
经验值: 1736
信誉值: 296
文章: 119
回复: 438
注册: 3/31/2003 8:18:00 AM
短消息资料加为好友 发送邮件 鲜花(0)鸡蛋(0) 楼主

排序算法小集
             排序是数据处理中经常使用的一种重要运算。
             设有{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;
                }
            }
        }
    }
}




明天不一定会更好,但更好的明天一定会到来

发帖时间: 3/12/2004 7:52:00 PM
admin110


头衔: 普通用户
梦幻币: 90
经验值: 12
信誉值: 100
文章: 0
回复: 2
注册: 8/12/2004 4:56:00 PM
短消息资料加为好友 发送邮件 2


什么意思啊。看不懂



发帖时间: 8/12/2004 5:12:00 PM
页次:1/1 本主题共2帖 每页20帖 [首页] [上一页][下一页] [尾页]
Copyright 2003-2008 NowFox.COM All Rights Reserved  梦幻家居©版权所有 版权信息
E-mail:webmaster@nowfox.com ICP备案序号:蜀ICP备05005961号
Powered By :NowFox.COM Version 2.7.0