冒泡排序

最简单粗暴的一个排序,遍历循环比较每一个值,发现更小的就交换位置


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


首页 我的博客
粤ICP备17103704号