积极答复者
数组排序问题

问题
-
请问下面的排序方法,是不是 高效的 冒泡排序方法 :
还麻烦各位解释一下, j为什么要从1开始,i 从0开始, myarry.Length - 1为什么要减1, 写上注释,谢谢
int[] myarry = { 16, 12, 23, 25, 29, 30 };for (int j = 1; j < myarry.Length; j++)
{
for (int i = 0; i < myarry.Length - 1; i++)
{
if (myarry[i] < myarry[i + 1])
{
int temp = myarry[i];
myarry[i] = myarry[i + 1];
myarry[i + 1] = temp;
}
}
}for (int k = 0; k < myarry.Length; k++)
{
Response.Write(myarry[k] + ",");
}
答案
-
你好!
你可以参考这个实例,希望对你有帮助!protected int[] bubbleUp(int[] array)
{
for (int i = 0; i < array.Length-1; i++)//要冒泡次数
{
for (int j = 0; j < array.Length-1-i; j++)//每次冒泡具体比较过程
{
if (array[j] > array[j+1])
{
int temp=array[j+1];
array[j+1]=array[j];
array[j] = temp;
}
}
}
return array;
}
周雪峰- 已标记为答案 YiChun Chen 2010年3月12日 6:52
全部回复
-
这不是人能否看出高效 你只能用电脑不断测试和改善才能看出是否高效
介绍一本 http://www.china-pub.com/195334#ml c#算法 -
你好!
你可以参考这个实例,希望对你有帮助!protected int[] bubbleUp(int[] array)
{
for (int i = 0; i < array.Length-1; i++)//要冒泡次数
{
for (int j = 0; j < array.Length-1-i; j++)//每次冒泡具体比较过程
{
if (array[j] > array[j+1])
{
int temp=array[j+1];
array[j+1]=array[j];
array[j] = temp;
}
}
}
return array;
}
周雪峰- 已标记为答案 YiChun Chen 2010年3月12日 6:52
-
下面是我根据自己的理解,加上的注释, 再麻烦大家看一下,不对的地方望修正,谢谢
int[] myarry = { 16, 12, 23, 25, 29, 30 };
int counter1 = 0;
int counter2 = 0;
for (int i = 1; i < myarry.Length; i++) //从第一位(12)开始循环到最后一位(30)
{for (int j = 0; j < myarry.Length - 1; j++) //从第0位(16)开始循环到倒数第二位(29)
{
if (myarry[j] < myarry[j + 1]) //myarry[j]是前五位数,myarry[j + 1]是后五位数,对myarry[j]中的元素与myarry[j + 1]中的元素进行比较
{
int temp = myarry[j]; //如果条件表达式成立就把myarry[j]数组赋给temp变量myarry[j] = myarry[j + 1]; //如果条件表达式成立就把myarry[j + 1] 数组元素赋给 myarry[j];
myarry[j + 1] = temp; //如果条件表达式成立就把myarry[j] 数组元素赋给myarry[j + 1] ;
counter1++;
}
counter2++;
}
}
Console.Write("循环了" + counter2 + "次,交换了" + counter1 + "次");foreach (int n in myarry)
{
Console.Write(n.ToString() + ",");
}