2 wanhuo haihai wanhuo_haihai 于 2016.01.25 20:01 提问

C#冒泡排序算法,调试不通过,求大神

今天老师布置个冒泡排序法的作业,用C#做。弄了很久,就是不能实现如下结果。求求大神棒棒我,帮我调好代码,今天就要交作业,痛苦啊。可以打开下面地址直接调制代码:

http://www.manonggu.com/biancheng/12

调试好了,可以保存,然后分享地址小窗口发给我,必有重谢!!

我这边继续做下一个作业。帮帮我啊

图片说明

图片说明

7个回答

leilba
leilba   Rxr 2016.01.26 10:54
已采纳

前面那位仁兄的代码我改了一下,这样应该能过了

     public void BubbleSort()
    {
        int temp;
        for (int outer = 0; outer < upper; outer++)
        {
            for (int inner = 0; inner < upper - outer; inner++)
            {

                if ((int)arr[inner] > arr[inner + 1])
                {
                    temp = arr[inner];
                    arr[inner] = arr[inner + 1];
                    arr[inner + 1] = temp;
                }
            }
        }
    }

运行结果

排序之前:
96 15 66 90 35 94 71 61 34 14
正在排序:

排序之后:
14 15 34 35 61 66 71 90 94 96

caozhy
caozhy   Ds   Rxr 2016.01.25 20:15
using System;
class Carray
{
    private int[] arr;
    private int upper;
    private int numElements;
    public Carray(int size)
    {
        arr = new int[size];
        upper = size - 1;
        numElements = 0;
    }
    public void Insert(int item)
    {
        arr[numElements] = item;
        numElements++;
    }
    public void DisplayElements()
    {
        for (int i = 0; i <= upper; i++)
            Console.Write(arr[i] + " ");
    }
    public void BubbleSort()
    {
        int temp;
        for (int outer = 0; outer < upper; outer++)
        {
            for (int inner = outer; inner < upper; inner++)
            {

                if ((int)arr[inner] > arr[inner + 1])
                {
                    temp = arr[inner];
                    arr[inner] = arr[inner + 1];
                    arr[inner + 1] = temp;
                }
            }
        }
    }
    static void Main()
    {
        Carray nums = new Carray(10);
        Random rnd = new Random(100);//100以内的随机数
        for (Int16 i = 0; i < 10; i++)
        {
            nums.Insert(rnd.Next(0, 100));
        }
        Console.WriteLine("排序之前:");
        nums.DisplayElements();
        Console.WriteLine("\n正在排序:");
        nums.BubbleSort();
        Console.WriteLine("\n排序之后:");
        nums.DisplayElements();
        Console.ReadKey();
    }
} 
caozhy
caozhy   Ds   Rxr 2016.01.25 20:38

我测试了没有发现问题啊

caozhy
caozhy   Ds   Rxr 2016.01.25 20:38
 排序之前:
96 15 66 90 35 94 71 61 34 14
正在排序:

排序之后:
15 66 35 61 14 34 71 90 94 96

运行结果

你看看你的输入输出是不是不符合要求

wanhuo_haihai
wanhuo_haihai   2016.01.25 20:29

我在http://www.manonggu.com/biancheng/12 调试还是没有通过啊。能否分享下你调好的地址给我,这样我好直接分享到其他同学,拜托了

wanhuo_haihai
wanhuo_haihai 回复caozhy: 要不你截图发给我看看,或者分享你的代码地址
2 年多之前 回复
wanhuo_haihai
wanhuo_haihai 回复caozhy: 后面两个数字没有纳入排序,不对啊
2 年多之前 回复
caozhy
caozhy 我用你的网站测试,怎么看是否通过,看运行结果也是对的。
2 年多之前 回复
lostmostar
lostmostar   2016.01.26 17:50
 using System;
class Carray
{
    private int[] arr;
    private int upper;
    private int numElements;
    public Carray(int size)
    {
        arr = new int[size];
        upper = size - 1 ;
        numElements = 0;
    }
    public void Insert(int item)
    {
        arr[numElements] = item;
        numElements++;
    }
    public void DisplayElements()
    {
        for (int i = 0; i <= upper; i++)
            Console.Write(arr[i] + " ");
    }
    public void BubbleSort()
    {
        //int temp;
        //外循环,从最后一个数字开始
        for (int outer = upper; outer > 0; outer--)
        {
            //内循环,从数组第0个位置开始
            for (int inner = 0; inner <= outer - 1; inner++)
            {
                if (arr[inner] > arr[inner + 1])
                {
                    arr[inner] = arr[inner] ^ arr[inner+1];
                    arr[inner + 1] = arr[inner] ^ arr[inner+1];
                    arr[inner] = arr[inner] ^ arr[inner+1];
                    /**
                    temp = arr[inner];
                    arr[inner] = arr[inner + 1];
                    arr[inner] = temp;
                    **/
                }
            }
        }
    }
    static void Main()
    {
        Carray nums = new Carray(10);
        Random rnd = new Random(100);//100以内的随机数
        for (Int16 i = 0; i < 10; i++)
        {
            nums.Insert(rnd.Next(0, 100));
        }
        Console.WriteLine("排序之前:");
        nums.DisplayElements();
        Console.WriteLine("\n正在排序:");
        nums.BubbleSort();
        Console.WriteLine("\n排序之后:");
        nums.DisplayElements();
        Console.ReadKey();
    }
}
enpterexpress
enpterexpress   Rxr 2016.01.25 21:28
 public void BubbleSort(int[] array)
        {
            for (int i = 0; i < array.Length - 2; i++)
            {
                for (int j = array.Length - 1; j >= 1; j--)
                {
                    if (array[j] < array[j - 1])
                    {
                        int temp = array[j];
                        array[j] = array[j - 1];
                        array[j - 1] = temp;
                    }
                }
            }
        }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
请编程实现一个冒泡排序算法?
int [] array = new int ; int temp = 0 ; for (int i = 0 ; i { for (int j = i + 1 ; j { if (array[j] { temp = array[i] ; array[i] = array[j] ; array[j] = temp ; } } }
冒泡排序算法的两种优化
冒泡排序(三种实现,两种优化) /* 首先,我们先介绍BubbleSort; 就是冒泡排序,冒泡排序大家应该最熟悉不过了; 冒泡排序算法的运作如下:(从后往前) 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元
8种经典算法之冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。冒泡排序与选择排序的区别区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的
汇编程序:冒泡排序
汇编语言能实现冒泡排序等排序算法吧?当然可以,排序可不是什么复杂的东东。就在第7周,给大家补充一下cmp、jxxx、xchg指令,下面的冒泡就出来了。   assume cs:cseg, ds:dseg, ss:sseg sseg segment stack dw 10H dup (?) sseg ends dseg segment dw 123,5,9,11,33,6,9,76
冒泡排序算法 Java 实现过程及详解
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。   冒泡排序算法的运作如下:  比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样
C#版 选择法、冒泡法、插入法和快速排序法分析与对比
前言         之前老师就讲过了选择法和冒泡法,之后又提到了插入法和排序法,今天做了一个小DEMO,对比了一下四种方法的效率,当然看了很多大牛也博客,其实算法还设计了时间复杂度和空间复杂度,对于这两个概念,我只能从表面上进行理解,其中涉及到了很多数学的问题,所以就不展开写了。 选择排序 冒泡法 插入法 快速排序法
排序算法之 冒泡排序 及其时间复杂度和空间复杂度
冒泡排序算法是所有排序算法中最简单的(前面也提到过),在生活中应该也会看到气泡从水里面出来时,越到水面上气泡就会变的越大。在物理上学气压的时候好像也看到过这种现象;其实理解冒泡排序就可以根据这种现象来理解:每一次遍历,都把大的往后面排(当然也可以把小的往后面排),所以每一次都可以把无序中最大的(最小)的元素放到无序的最后面(或者说有序元素的最开始);
Java算法求最大最小值,冒泡排序,斐波纳契数列,日历一些经典算法
经典的算法总结
冒泡排序算法的实现
c#控制台应用程序冒泡排序算法的实现
C#常用排序算法
C#常用排序算法:冒泡,选择,插入,希尔