最简单粗暴的一个排序,遍历循环比较每一个值,发现更小的就交换位置
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