简单的三大排序算法选择

    前面系列文章

插入排序: 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

时间: 2024-10-18 17:18:47

简单的三大排序算法选择的相关文章

排序算法--选择排序

# 选择排序##本小节知识点:1. [了解]选择排序2. [掌握]选择排序的基本思想3. [了解]练习 --- ##1.选择排序- 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元 素,然后放到排序序列末尾.以此类推,直到所有元素均排序完毕. --- ##2.选择排序的基本思想- 第一趟排序在所有待排序的n个记录中选出关键字最小的记录,将它与数据表中的第一个记录交

经典排序算法 - 选择排序Selection sort

经典排序算法 - 选择排序Selection sort 顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说,你们谁最小出列,站到最后边 然后继续对剩余的无序数组说,你们谁最小出列,站到最后边 再继续刚才的操作,一直到最后一个,继续站到最后边,现在数组有序了,从小到大 举例 先说看每步的状态变化,后边介绍细节,现有无序数组[6 2 4 1 5 9] 第一趟找到最小数1,放到最前边(与首位数字交换) 交换前

白话排序算法--选择排序

前言: 继续排序方法,紧接早上的插入排序,紧跟其后,现在跟新上选择排序算法 选择排序:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 情景描述: 新学期换了新体育老师,面对同样的排队情景,他说道:“我不管之前是怎么教的,之后都按照我的来做,大家自己进行选择排序”. 从第一位同学开始,和第二位同学比较,谁矮了,谁就记着目前自己是最矮的(可以站前面,嘿嘿), 然后再和第三位

数据结构与算法 4:排序算法,选择/插入/冒泡/希尔/快速/归并

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 排序算法 平均复杂度 冒泡排序    O(n2) 选择排序     O(n2) 插入排序     O(n2) 希尔排序     O(n1.5) 快速排序    O(N*logN) 归并排序     O(N*logN) 堆排序     O(N*logN) 基数排序     O(d(n+r)) 选择排序: [email protected]://990487026.blog.51cto.com~/sort$ c

经典排序算法——选择排序

对于一个int数组,请编写一个选择排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] class SelectionSort { public: int* selectionSort(int* A, int n){ // write code here int k=0; for(int i=0;i<n;++i) { k=i; for(int j=i+1;j<n;++j)//找到最小元素 {

排序算法——选择排序(js语言实现)

选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推. 例如:8  3  4  5  6  2  1  7 第一次:寻找数组中最小的数1,然后和8替换,得到 1 3 4 5 6 2 8 7 第二次:因为1的位置已经确定,所以只需要找剩下数组中最小的就行了,2和3互换得到1 2 4 5 6 3 8 7 第三次:1和2的位置已经确定,就看剩下的数中最小的数,3和4互换,结果是1 2 3 5 6 4

数据结构(四)常用排序算法-选择、插入、希尔

选择排序 实现思路: 1.将需排序的集合设为A,已经排好顺的集合为B(在未排序前B集合为空). 2.每次从A集合中查找出最大或者最小的元素后放入集合B中 3.同时将该元素从集合A中移除. 4.循环执行以上两步直到集合A为空,B集合中的元素就有序了. 缺点: 效率低,时间复杂度为 O(n*n),是一种只适合小数据集的原地排序算法.   示范代码 1  public class CommSort { 2      // 比较大小 3      @SuppressWarnings({ "rawtype

算法 排序算法--选择排序

选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序. 在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换. 下面,以对 3  2  4  1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置. 第1轮 排序过程 (寻找第1小的数所在的位置)3  2  4  1(最初, mi

JavaScript排序算法——选择排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-