C#,随机数数组排序!求大神看看代码错在哪里?

问题:
由用户确定数组长度后,随机生成一个数组(随机数范围0~20),并对该数组进行排序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入数组长度!");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("------------------");
            int[] a = new int[n];
            var s = new Random();
            for (int i = 0;i < n;i++)
            {
                a[i] = s.Next(1,20);                   //给数组的每个元素赋值一个随机数(范围是0~n-1)
                Console.WriteLine(a[i]);
            }
            Console.WriteLine("排序后的数组如下↓↓");
            int temp = 0;
            for (int i = 0; i < a.Length; i++)
                for (int j = 0; j < a.Length-i-1; j++)
                {
                    if (a[j] > a[j + 1])
                    {
                        temp = a[j];
                        a[j] = a[j + 1];
                        a[j + 1] = temp;
                    }
                    Console.WriteLine(a[j]);
                }
            Console.Read();
        }
    }
}

图片说明
运行以后数组没有被排序,而且莫名多了很多元素,求大神帮忙看看代码错在那里了!谢谢大神。

0

2个回答

你写的是冒泡排序吧。算法没问题,你的Console.WriteLine(a[j])这一行位置不对。请看代码

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace ConsoleApp1 { 
    class Program { 
        static void Main(string[] args) { 
            Console.WriteLine("请输入数组长度!"); 
            int n = int.Parse(Console.ReadLine()); 
            Console.WriteLine("------------------"); 
            int[] a = new int[n]; 
            var s = new Random(); 
            for (int i = 0;i < n;i++) {
                 a[i] = s.Next(1,20); //给数组的每个元素赋值一个随机数(范围是0~n-1) 
                 Console.WriteLine(a[i]); 
            } 
            Console.WriteLine("排序后的数组如下↓↓"); 
            int temp = 0; 
            for (int i = 0; i < a.Length; i++) 
                for (int j = 0; j < a.Length-i-1; j++) {
                    if (a[j] > a[j + 1]) { 
                        temp = a[j]; 
                        a[j] = a[j + 1]; 
                        a[j + 1] = temp; 
                    }  
                } 
            for (int i = 0; i < a.Length; i++)//增加了这个for循环用来输出数组
                Console.WriteLine(a[i]);
        Console.Read(); 
        } 
    } 
}

下次有问题最好把代码格式做好吧,这样全挤在一起很不方便看哦。
图片说明

0
qq_43671674
ln E 谢谢!确实用的是冒泡排序!因为是第一次用csdn发问,很多地方还不懂。。。下次会认真排版的!!谢谢大神帮忙!
3 个月之前 回复

https://ask.csdn.net/questions/760710 一样的问题你问了2次

2
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复ln E: 没事,问题解决请点采纳,每采纳1个回答你可以得2分
3 个月之前 回复
qq_43671674
ln E 真的非常抱歉。。。因为我第一次发问题的时候发现没有显示,我以为问题发出去,于是重发了一遍。
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!