最简单粗暴的一个排序,遍历循环比较每一个值,发现更小的就交换位置
static void Main(string[] args)
{
int[] datas = new int[100000];
Random r = new Random();
for (int i = 0; i < 100000; i++) {
datas[i] = r.Next(1, 10000);
}
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int[] newdatas = Sort(datas);
stopwatch.Stop();
foreach (int data in newdatas) {
Console.WriteLine(data);
}
Console.WriteLine("用时:" + stopwatch.ElapsedMilliseconds);
Console.ReadKey();
}
static int[] Sort(int[] datas) {
int length = datas.Length;
int[] newArr = new int[datas.Length];
for (int x = 0; x < length; x++) {
newArr[x] = datas[x];//复制数组到新数组
}
//对新数组进行排序
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (newArr[j] < newArr[i]) {
//对比发现后面值较小时,交换值
int temp = newArr[i];
newArr[i] = newArr[j];
newArr[j] = temp;
}
}
}
return newArr;//返回新的数组(排序好的)
}对于冒泡排序的执行次数为(n+n-1+n-2...+1) = n/2(n+1)
所以运行时间为 O(n2)
模拟排序10W条数据用时:24439ms