C#冒泡排序

2024-11-16 12:33:08
推荐回答(5个)
回答1:

这里我只更改你的冒泡排序的方法,如果认为有用可以采纳:
public static void Sort(int[] array)
{
int[] arr=new int[]{45,12,44,4,5};
for(int j=1;j{//外循环每次把参与排序的最大数排在最后
for(int i=0;i{ //内层循环负责对比相邻的两个数,并把最大的排在后面
if(arr[i]>arr[i+1])
{ //如果前 一个数大于后一个数,则交换两个数
int temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}

}
}
//用 一个循环访问数组里的元素并打印
for(int j=0;j {
Console.Write(arr[i]+"");
}
}

回答2:

int
a[5]={1,4,7,2,5};for(i=0;i//外层循环控制比较次数,数组长度减1{
for(j=0;j//这是升序排列,,如果要将序就把
{//这是升序排列,,如果要将序就把a[j]>a[j+1]改为a[j]if(a[j]>a[j+1])
//比较相邻的2个数组元素
{ int
temp=a[j]; //用一个中间变量来交换元素在数组中的位置
a[j]=a[j+1]; a[j+1]=temp;
}
}} 第一轮比:1和4,7,2,5比发现没有比1小的数所以没交换 结果:1
4
7
2
5 第二轮比:4和7,2,5比发现2比4小,将4和2位置交换,之后没有发现比2小的数,不交换 结果:1
2
7
4
5 第三轮比:7和4,5比发现4比7小,将7和4位置交换,之后没有发现比4小的数,不交换 结果:1
2
4
7
5 第四轮比:7和5比发现5比7小,将7和5位置交换,排序结束。 结果:1
2
4
5
7

回答3:

如下:
class Program
{
public static void Sort(int[] array)
{
int i, j; // 循环变量
int temp; // 临时变量
for (i = 0; i < array.Length - 1; i++)
{
for (j = 0; j < array.Length - 1 - i; j++)
{
if (array[j] > array[j + 1])
{
// 交换元素
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}

static void Main(string[] args)
{
int[] array = new int[6];
for (int i = 1; i <= array.Length; i++)
{
Console.Write("请输入第{0}个同学的分数:", i);
array[i-1] = int.Parse(Console.ReadLine());
}
Sort(array);
Console.WriteLine("\n" + "成绩排序结果如下:");
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
}
Console.ReadKey();
}
}

回答4:

i = 0; i < array.Length - 1; i++
这句改为
i = 0; i < array.Length; i++

j = 0; j < array.Length - 1 - i; j++
这句改为
j = 0; j < array.Length - i; j++

你试试看行不。

回答5:

for (i = 0; i < array.Length - 1; i++)改成for(i=0;i {
for (j = 0; j < array.Length - 1 - i; j++)改成for (j = 0; j < array.Length - 1; j++)
就Ok 了