简单的三大排序算法选择

    前面系列文章

      插入排序: https://www.cnblogs.com/gdouzz/p/10759390.html

   选择排序: https://www.cnblogs.com/gdouzz/p/10759239.html

   冒泡排序:   https://www.cnblogs.com/gdouzz/p/10720451.html

  (二)个人总结

  1、选择排序和冒泡排序比较

  选择排序和冒泡排序的比较,选择排序的时间复杂度,不论最好最坏都是o(n²),是因为比较次数的原因,但它的交换次数是比冒泡排序要少的,所以在某些情况下,可能会比冒泡排序快一点。冒泡排序因为交换次数的问题,在平时的编程中基本也不会用到。但是相对来说,出场率要比选择排序高。

       2、为什么说插入排序会比冒泡排序好

            //插入排序//if (tempValue < arr[k])
                    //{
                    //    arr[k + 1] = arr[k];
                    //}
                    //else
                    //{
                    //    break;
                    //}
                    //上面插入排序,只需要一次赋值操作,
                        // if (arr[j] > arr[j + 1])
                        // {
                            // var temp = arr[j];
                            // arr[j] = arr[j + 1];
                            // arr[j + 1] = temp;
                        // }
                    //下面表面看都已经3次赋值了,并且交换操作对CPU不友好。
//为啥说,交换操作对CPU不友好呢,我们CPU的从内存里面加载数据的时候,一般是整块来加载的 //就是说会把相邻的数据都一块读到寄存器中(缓存中)。 //如果你是交换的话,当你一个数组非常庞大,假设第10项要和第10000项,一个在CPU的寄存器中, //一部分在内存或者外存,这里就会多一层时间消耗。

  插入排序和选择排序比较,不用比较了。

  总结:这三种简单的排序算法当中,如果要推荐,应该要优先使用插入排序,效率会更高。还有在日常编程中,冒泡排序和选择排序,几乎很少用到(如果在数据量很小的排序当中,这几个算法也不会有太大的区别,调用次数多了,才会稍微有点区别),对于我们程序员来说,应该要追求更高效的做法(在插入,冒泡,选择)中,做出合适的选择。

原文地址:https://www.cnblogs.com/gdouzz/p/10759399.html