apples1949 发表于 2022-7-15 10:29

C#数组数值交换问题

using System;

namespace _20220714
{
    internal class Program
    {
      static void Main(string[] args)
      {
            double[]sz = new double;
            for(int i = 0; i < 10; i++)
            {
                Console.Write("请输入第{0}个数:",i+1);
                sz=Convert.ToDouble(Console.ReadLine());
            }
            //for(int i = 0; i < 10; i++)
            //{
            //    Console.WriteLine("第{0}个数为{1}", i + 1, sz);
            //}
            for(int j = 0; j < 10; j++)
            {
                for(int k = 0; k < 9; k++)
                {
                  if (sz > sz)
                  {
                        double lss= sz;
                        Console.WriteLine("sz({0}) sz({1});", sz, sz);
                        Console.WriteLine("sz = sz;");
                        sz = sz;
                        Console.WriteLine("sz({0}) = sz({1});", sz, sz);
                        Console.WriteLine("lss({0})sz({1});", lss, sz);
                        Console.WriteLine("lss = sz;");
                        lss = sz;
                        Console.WriteLine("lss({0}) = sz({1});", lss, sz);
                        Console.WriteLine("sz({0}),sz({1}),lss({2})", sz, sz, lss);
                        Console.WriteLine(" ");
                  }

                }
            }
            //for (int i = 0; i < 10; i++)
            //{
            //    Console.WriteLine("排序后第{0}个数为{1}", i + 1, sz);
            //}
      }
    }
}


结果输出显示:
sz(4) sz(7);
sz = sz;
sz(7) = sz(7);
lss(7)sz(7);
lss = sz;
lss(7) = sz(7);
sz(7),sz(7),lss(7)

就懵了
使用.net5

QR520 发表于 2022-7-15 10:33

if (sz > sz)
{
    double lss= sz;
    Console.WriteLine("sz({0}) sz({1});", sz, sz);
    Console.WriteLine("sz = sz;");
    sz = sz;
    Console.WriteLine("sz({0}) = sz({1});", sz, sz);
    Console.WriteLine("lss({0})sz({1});", lss, sz);
    Console.WriteLine("lss = sz;");
    sz = lss;
    Console.WriteLine("lss({0}) = sz({1});", lss, sz);
    Console.WriteLine("sz({0}),sz({1}),lss({2})", sz, sz, lss);
    Console.WriteLine(" ");
}

layuai 发表于 2022-7-15 10:44

你这就是个简单冒泡排序,但是交换的时候你想想是不是有问题,你赋值给另一个交换,然后交换回来时值是不是变了,建议用个temp来保存一个值交换,或者使用异或交换^

apples1949 发表于 2022-7-15 11:20

layuai 发表于 2022-7-15 10:44
你这就是个简单冒泡排序,但是交换的时候你想想是不是有问题,你赋值给另一个交换,然后交换回来时值是不是 ...

好的谢谢

yk2014 发表于 2022-7-15 11:23

2楼代码对的。当k下标的值大于k+1时,把k和k+1里面的值交换,那么先把k+1的值存起来,然后把k的值赋值给k+1,再把之前存起来的值赋值给k。

apples1949 发表于 2022-7-15 11:36

QR520 发表于 2022-7-15 10:33
if (sz > sz)
{
    double lss= sz;


十分感谢!
页: [1]
查看完整版本: C#数组数值交换问题