C#几种常用的排序算法

C#几种常用的排序算法:
1 冒泡排序法
 1 ContractedBlock.gif ExpandedBlockStart.gif 冒泡排序法 #region 冒泡排序法
 2InBlock.gifpublic void Sort(int[] list)
 3ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
 4InBlock.gif    long begintime = System.DateTime.Now.Second*1000+System.DateTime.Now.Millisecond;
 5InBlock.gif    WriteLine(begintime);
 6InBlock.gif    int j,temp;
 7InBlock.gif    j= 1;
 8InBlock.gif    while((j<list.Length))
 9ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
10InBlock.gif        for(int i=0;i<list.Length -j;i++)
11ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
12InBlock.gif            if(list[i]<list[i+1])
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
14InBlock.gif                temp = list[i];
15InBlock.gif                list[i] = list[i+1];
16InBlock.gif                list[i+1= temp;
17ExpandedSubBlockEnd.gif            }

18ExpandedSubBlockEnd.gif        }

19InBlock.gif        j++;
20ExpandedSubBlockEnd.gif    }

21InBlock.gif    long endtime = System.DateTime.Now.Second*1000+System.DateTime.Now.Millisecond;
22InBlock.gif    WriteLine(endtime);
23InBlock.gif    WriteLine(endtime-begintime);
24ExpandedSubBlockEnd.gif}

25ExpandedBlockEnd.gif#endregion

2 选择排序法
 1 ContractedBlock.gif ExpandedBlockStart.gif 选择排序法 #region 选择排序法
 2InBlock.gifpublic void SortChoice(int [] list)
 3ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
 4InBlock.gif    long begintime = System.DateTime.Now.Millisecond;
 5InBlock.gif    int min;
 6InBlock.gif    for(int i=0;i<list.Length-1;i++)
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 8InBlock.gif        min=i;
 9InBlock.gif        for(int j=i+1;j<list.Length;j++)
10ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
11InBlock.gif            if(list[j]<list[min])
12InBlock.gif                min=j;
13ExpandedSubBlockEnd.gif        }

14InBlock.gif        int t=list[min];
15InBlock.gif        list[min]=list[i];
16InBlock.gif        list[i]=t;
17ExpandedSubBlockEnd.gif    }

18InBlock.gif    long endtime = System.DateTime.Now.Millisecond;
19InBlock.gif    WriteLine(begintime);
20InBlock.gif    WriteLine(endtime);
21InBlock.gif    WriteLine(endtime-begintime);
22ExpandedSubBlockEnd.gif}

23ExpandedBlockEnd.gif#endregion

3 插入排序法
 1 ContractedBlock.gif ExpandedBlockStart.gif 插入排序法 #region 插入排序法
 2InBlock.gifpublic void SortInsert(int [] list)
 3ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
 4InBlock.gif    for(int i=1;i<list.Length;i++)
 5ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 6InBlock.gif        int t=list[i];
 7InBlock.gif        int j=i;
 8InBlock.gif        while((j>0)&&(list[j-1]<t))
 9ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
10InBlock.gif            list[j]=list[j-1];
11InBlock.gif            --j;
12ExpandedSubBlockEnd.gif        }

13InBlock.gif        list[j]=t;
14ExpandedSubBlockEnd.gif    }

15ExpandedSubBlockEnd.gif}

16ExpandedBlockEnd.gif#endregion

4 希尔排序法
 1 ContractedBlock.gif ExpandedBlockStart.gif 希尔排序法 #region 希尔排序法
 2InBlock.gifpublic void SortShell(int [] list)
 3ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
 4InBlock.gif    int inc;
 5InBlock.gif    for(inc=1;inc<=list.Length/9;inc=3*inc+1);
 6InBlock.gif    for(;inc>0;inc/=3)
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 8InBlock.gif        for(int i=inc+1;i<=list.Length;i+=inc)
 9ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
10InBlock.gif            int t=list[i-1];
11InBlock.gif            int j=i;
12InBlock.gif            while((j>inc)&&(list[j-inc-1]>t))
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
14InBlock.gif                list[j-1]=list[j-inc-1];
15InBlock.gif                j-=inc;
16ExpandedSubBlockEnd.gif            }

17InBlock.gif            list[j-1]=t;
18ExpandedSubBlockEnd.gif        }

19ExpandedSubBlockEnd.gif    }

20ExpandedSubBlockEnd.gif}

21ExpandedBlockEnd.gif#endregion

转载于:https://www.cnblogs.com/kingeric/archive/2006/11/13/559795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值