4个回答
展开全部
我给你这段,你稍微修改吧
下面的是对冒泡排序的改进,你当作学习吧···比一般的冒泡效率都高
主要是有一个bool done = false; 来控制
要速记就看上面的高手的吧
static void Main(string[] args)
{
//控制输入
Console.WriteLine("请输入您要输入数组的大小:");
int num = Convert.ToInt32(Console.ReadLine());
int[] number = new int[num];
for (int i = 0; i < number.Length; i++)
{
Console.WriteLine("请输入第{0}个元素", i + 1);
int fornum = Convert.ToInt32(Console.ReadLine());
number[i] = fornum;
}
Sort(number);
//控制输出格式
foreach(int a in number)
{
Console.Write("{0} ", a);
}
Console.ReadLine();
}
public static void Sort(int[] num)
{
int i, j, temp;
bool done = false;
j = 1;
while ((j < num.Length) && (!done))
{
done = true;
for (i = 0; i < num.Length - j; i++)
{
if (num[i] > num[i + 1])
{
done = false;
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
}
}
j++;
}
}
下面的是对冒泡排序的改进,你当作学习吧···比一般的冒泡效率都高
主要是有一个bool done = false; 来控制
要速记就看上面的高手的吧
static void Main(string[] args)
{
//控制输入
Console.WriteLine("请输入您要输入数组的大小:");
int num = Convert.ToInt32(Console.ReadLine());
int[] number = new int[num];
for (int i = 0; i < number.Length; i++)
{
Console.WriteLine("请输入第{0}个元素", i + 1);
int fornum = Convert.ToInt32(Console.ReadLine());
number[i] = fornum;
}
Sort(number);
//控制输出格式
foreach(int a in number)
{
Console.Write("{0} ", a);
}
Console.ReadLine();
}
public static void Sort(int[] num)
{
int i, j, temp;
bool done = false;
j = 1;
while ((j < num.Length) && (!done))
{
done = true;
for (i = 0; i < num.Length - j; i++)
{
if (num[i] > num[i + 1])
{
done = false;
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
}
}
j++;
}
}
展开全部
数组 排序吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我前几天回答过一个排序的问题,这里你可以看一下。
举个实例:
假如有5个成绩58,87,99,71,68组成的一个数组,要求对数组中的成绩值从大到小排序,并且显示出排序后数组中成绩的值。
解答:
冒泡排序速记口诀(降序):
N个数字来排序,两两相比大靠前,
外层循环N-1,内层循环N-1-i.
如果要升序,只要把程序中的if (a[j] < a[j + 1]) 小于号换成大于号就行了
代码如下:
static void Main(string[] args)
{
int[] a = new int[5] {58,87,99,71,68 };
int temp; //临时变量,保存最大值
int i,j; //循环变量
for (int i = 0; i < a.Length-1; i++)
{
for (int j = 0; j < a.Length - 1-i; j++)
{
if (a[j] < a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
foreach (int c in a) //用foreach输出排序后的数组元素
{
Console.WriteLine(c);
}
}
}
}
举个实例:
假如有5个成绩58,87,99,71,68组成的一个数组,要求对数组中的成绩值从大到小排序,并且显示出排序后数组中成绩的值。
解答:
冒泡排序速记口诀(降序):
N个数字来排序,两两相比大靠前,
外层循环N-1,内层循环N-1-i.
如果要升序,只要把程序中的if (a[j] < a[j + 1]) 小于号换成大于号就行了
代码如下:
static void Main(string[] args)
{
int[] a = new int[5] {58,87,99,71,68 };
int temp; //临时变量,保存最大值
int i,j; //循环变量
for (int i = 0; i < a.Length-1; i++)
{
for (int j = 0; j < a.Length - 1-i; j++)
{
if (a[j] < a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
foreach (int c in a) //用foreach输出排序后的数组元素
{
Console.WriteLine(c);
}
}
}
}
参考资料: 自己写过的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
典型的 冒泡排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询