我现在的代码如下,
public void BubbleSort(string[] R)
{
int i, j;
string temp; //交换标志
bool exchange;
for (i = 0; i < R.Length; i++) //最多做R.Length-1趟排序
{
exchange = false; //本趟排序开始前,交换标志应为假
for (j = R.Length - 2; j >= i; j--)
{
string[] kk = R[j].ToString().Split(',');
string[] kk1 = R[j + 1].ToString().Split(',');
if (Double.Parse(kk1[0]) < Double.Parse(kk[0])) //交换条件
{
temp = R[j + 1];
R[j + 1] = R[j];
R[j] = temp;
exchange = true; //发生了交换,故将交换标志置为真
}
}
if (!exchange) //本趟排序未发生交换,提前终止算法
{
break;
}
}
}
传进一个数组,根据数组第一位数字大小排序,数组一共2000行数据,排完序大约要3-4秒钟,怎么优化能让其处理的更快呢?新手求助,谢谢大家!
public void BubbleSort(string[] R)
{
int i, j;
string temp; //交换标志
bool exchange;
for (i = 0; i < R.Length; i++) //最多做R.Length-1趟排序
{
exchange = false; //本趟排序开始前,交换标志应为假
for (j = R.Length - 2; j >= i; j--)
{
string[] kk = R[j].ToString().Split(',');
string[] kk1 = R[j + 1].ToString().Split(',');
if (Double.Parse(kk1[0]) < Double.Parse(kk[0])) //交换条件
{
temp = R[j + 1];
R[j + 1] = R[j];
R[j] = temp;
exchange = true; //发生了交换,故将交换标志置为真
}
}
if (!exchange) //本趟排序未发生交换,提前终止算法
{
break;
}
}
}
传进一个数组,根据数组第一位数字大小排序,数组一共2000行数据,排完序大约要3-4秒钟,怎么优化能让其处理的更快呢?新手求助,谢谢大家!
class Program
{
static void Main(string[] args)
{
int[] list = {1,2,4,57,75,2,3,6,3,2,1,99,55,110 };
list = BubbleSort(list);
for (int i = 0; i < list.Length; i++)
Console.Write(list[i] + "\t");
Console.Read();
} public static int[] BubbleSort(int[] R)
{
int i, j;
int temp; //交换标志
for (i = 0; i < R.Length; i++) //最多做R.Length-1趟排序
{
for (j = i; j < R.Length; j++)
{
if (R[i] < R[j])
{
temp = R[i];
R[i] = R[j];
R[j] = temp;
}
}
} return R;
}
}
而你传入了一个 字符串数组,这样你还要反复的把字符串数组 转换成 数字类型及逆行比较另外你的exchange没起到作用,你为什么还要定义它呢
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array)
{
temp = array ;
array = array[j] ;
array[j] = temp ;
}
}
}
不慢哦