加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中进行冒泡排序的最优雅方法是什么?

发布时间:2020-12-15 18:28:39 所属栏目:百科 来源:网络整理
导读:可以清理吗? using System; class AscendingBubbleSort { public static void Main() { int i = 0,j = 0,t = 0; int []c=new int[20]; for(i=0;i20;i++) { Console.WriteLine("Enter Value p[{0}]:",i); c[i]=int.Parse(Console.ReadLine()); } // Sorting:
可以清理吗?
using System;  
class AscendingBubbleSort 
{     
    public static void Main()
    {
        int i = 0,j = 0,t = 0;
        int []c=new int[20];
        for(i=0;i<20;i++)
        {
            Console.WriteLine("Enter Value p[{0}]:",i);
            c[i]=int.Parse(Console.ReadLine());
        }
        // Sorting: Bubble Sort
        for(i=0;i<20;i++)
        {
            for(j=i+1;j<20;j++)
            {
                if(c[i]>c[j])
                {
                    Console.WriteLine("c[{0}]={1},c[{2}]={3}",i,c[i],j,c[j]);
                    t=c[i];
                    c[i]=c[j];
                    c[j]=t;
                }
            }
        }
        Console.WriteLine("bubble sorted array:");
        // sorted array output
        for(i=0;i<20;i++)
        {
            Console.WriteLine ("c[{0}]={1}",c[i]);
        }
    }
}

解决方法

你在那里粘贴的东西不是 bubble sort.它是一种“蛮力”类型,但它不是泡沫排序.这是一个通用冒泡排序的例子.它使用任意比较器,但允许您省略它,在这种情况下,默认比较器用于相关类型.它将对IList< T>的任何(非读取)实现进行排序,其包括数组.阅读上面的链接(到维基百科),以更多地了解冒泡排序是如何工作的.注意我们从开始到结束的每个循环如何,但只将每个项目与其邻居进行比较.它仍然是一种O(n2)排序算法,但在许多情况下它会比你给出的版本更快.
public void BubbleSort<T>(IList<T> list)
{
    BubbleSort<T>(list,Comparer<T>.Default);
}

public void BubbleSort<T>(IList<T> list,IComparer<T> comparer)
{
    bool stillGoing = true;
    while (stillGoing)
    {
        stillGoing = false;
        for (int i = 0; i < list.Count-1; i++)
        {
            T x = list[i];
            T y = list[i + 1];
            if (comparer.Compare(x,y) > 0)
            {
                list[i] = y;
                list[i + 1] = x;
                stillGoing = true;
            }
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读