小白求教:简单的排序问题

lanytin 2008-05-03 12:35:49
各位南来北往高手,
我写了一个排序的控制台程序,如下:
class Program
{
abstract class Paixu
{
abstract public void taxis(int m);
}
class DerivePaixu : Paixu
{
public override void taxis(int m)
{
int i;
int[] A=new int[m];
Console.WriteLine("请依次输入你要排序的数(数的结束用回车表示):\n");
for(i=0;i<m;i++)
A[i]=int.Parse(Console.ReadLine());
for (i = 0; i< m; i++ )
{
for (int j = i + 1; j< m; j++)
{
int temp;
if (A[i] > A[j])
{
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
Console.WriteLine("排序的结果是:");
for (i = 0; i < m; i++)
{
Console.Write(" " + A[i]);
}

}

}
}
static void Main(string[] args)
{
Console.WriteLine("请输入你要排序整数的个数n:");
int n = int.Parse(Console.ReadLine());
DerivePaixu Tax = new DerivePaixu();
Tax.taxis(n);

}
运行结果:
请输入你要排序整数的个数n:
5
请依次输入你要排序的数(数的结束用回车表示):
5
4
3
2
1
排序的结果是:
1 5 4 3 2

怎么回事?小白谢谢了!
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanytin 2008-05-11
  • 打赏
  • 举报
回复
不好意思,各位,最近网络维修,一直不能上网,所以现在才结分。
小白谢谢各位了!
SuperTyro 2008-05-03
  • 打赏
  • 举报
回复
这种方式太麻烦了

用Array类里的sort方法 直接可以达到目的
至于冒泡排序 我喜欢这么用

for(int i=0;i<Array.length;i++)
{
for(int j=0;j<Array.length-i-1;j++)
{
if(Array[j]>Array[j+1])
{
temp = Array[j];
Array[j] = Array[j+1];
Array[j+1] = temp;
}
}
}



嘿嘿 我是小菜鸟 说的不好请见凉 希望能够帮到你
hackztx 2008-05-03
  • 打赏
  • 举报
回复

class OrderBy
{
public static int[] Min(params int[] Numbers)
{
int LenNumbers = Numbers.Length;
if (LenNumbers > 1)
{
for (int i = 0; i < LenNumbers; i++)
{
for (int j = i + 1;j < LenNumbers; j++)
{
if (Numbers[i] > Numbers[j])
{
int swapNumber = Numbers[i];
Numbers[i] = Numbers[j];
Numbers[j] = swapNumber;
}
}
}
return Numbers;
}
return Numbers;
}

public static int[] Max(params int[] Numbers)
{
int LenNumbers = Numbers.Length;
if (LenNumbers > 1)
{
for (int i = 0; i < LenNumbers; i++)
{
for (int j = i + 1; j < LenNumbers; j++)
{
if (Numbers[i] < Numbers[j])
{
int swapNumber = Numbers[i];
Numbers[i] = Numbers[j];
Numbers[j] = swapNumber;
}
}
}
return Numbers;
}
return Numbers;
}
}

int[] intNumbers = OrderBy.Min(3, 5, 6, 4, 7, 1);
int[] intNumbers2 = OrderBy.Max(3,5,6,4,7,1);
wgdong1001 2008-05-03
  • 打赏
  • 举报
回复
位置写错了。

  abstract class Paixu
{
abstract public void taxis(int m);
}
class DerivePaixu : Paixu
{
public override void taxis(int m)
{
int i;
int[] A = new int[m];
Console.WriteLine("请依次输入你要排序的数(数的结束用回车表示):\n");
for (i = 0; i < m; i++)
A[i] = int.Parse(Console.ReadLine());
for (i = 0; i < m; i++)
{
for (int j = i + 1; j < m; j++)
{
int temp;
if (A[i] > A[j])
{
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
}
Console.WriteLine("排序的结果是:");
for (i = 0; i < m; i++)
{
Console.Write(" " + A[i]);
}
}
}
static void Main(string[] args)
{
Console.WriteLine("请输入你要排序整数的个数n:");
int n = int.Parse(Console.ReadLine());
DerivePaixu Tax = new DerivePaixu();
Tax.taxis(n);
Console.Read();

}
compleat 2008-05-03
  • 打赏
  • 举报
回复
养成良好的编码习惯很重要哈,要注意哦
brookmill 2008-05-03
  • 打赏
  • 举报
回复
LZ如果想看排序的过程,就不要用同一个i作为循环控制变量:
for (i = 0; i < m; i++ )
{
for (int j = i + 1; j < m; j++)
{
int temp;
if (A[i] > A[j])
{
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
Console.WriteLine("排序的结果是:");
for (int k = 0; k < m; k++)
{
Console.Write(" " + A[k]);
}

}
brookmill 2008-05-03
  • 打赏
  • 举报
回复
输出结果的位置错了
for (i = 0; i < m; i++ )
{
for (int j = i + 1; j < m; j++)
{
int temp;
if (A[i] > A[j])
{
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}

}
Console.WriteLine("排序的结果是:");
for (i = 0; i < m; i++)
{
Console.Write(" " + A[i]);
}

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧