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 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(" ");
} 你这就是个简单冒泡排序,但是交换的时候你想想是不是有问题,你赋值给另一个交换,然后交换回来时值是不是变了,建议用个temp来保存一个值交换,或者使用异或交换^ layuai 发表于 2022-7-15 10:44
你这就是个简单冒泡排序,但是交换的时候你想想是不是有问题,你赋值给另一个交换,然后交换回来时值是不是 ...
好的谢谢 2楼代码对的。当k下标的值大于k+1时,把k和k+1里面的值交换,那么先把k+1的值存起来,然后把k的值赋值给k+1,再把之前存起来的值赋值给k。 QR520 发表于 2022-7-15 10:33
if (sz > sz)
{
double lss= sz;
十分感谢!
页:
[1]