美文网首页
数据结构之排序总结

数据结构之排序总结

作者: 洛珎 | 来源:发表于2019-11-04 18:27 被阅读0次

    1.冒泡排序

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。

    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

    针对所有的元素重复以上的步骤,除了最后一个。

    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

    eg:数组[1,5,2,3,4],升序排序

    思路:两层遍历,比较相邻两个元素比较大小,使大的(或小的)数往数组头部排。

    首先从数字最后一个数开始,比较相邻两个数的大小,如果前面的数比它小,交换位置,这样遍历一轮下来就把最大的书排在了index=0的位置,即5;接下来继续上面的做法,就把第二大的数排在了index=1的位置;依次下去直到完成数组的排序;

    时间复杂度:为n方;最快是数组正序的时候;最慢是数组倒序的时候,比如升序对应的降序

    2.选择排序

    3.插入排序

    4.归并排序

    eg:数组[7,2,4,6]升序

    思路:先将数组平均分成两份数组,再继续平分,直到每个数组的长度为1;

    再有序地合并,比如arr1=[2,7],arr2=[4,6],先拿arr1的首元素2与arr2的首元素相比较,2<4,小的取出来加入返回的新数组temp,即2,并且小的数组向后移动一个位置,拿7和4比较,7>4,取出4加入temp,即[2,4],重复直到完成排序

    5.快速排序

    eg:[2,3,4,1,5,6]升序

    思路:首先取基准数,这里取数组第一个数,右指针从右向左扫描,碰到第一个小于基准数的时候停住,左指针从左向右扫描,碰到第一个大于基准数的时候停住;

    交换左右指针所停位置的数,最后交换基准数与指针相遇位置的数;

    递归

    相关文章

      网友评论

          本文标题:数据结构之排序总结

          本文链接:https://www.haomeiwen.com/subject/kdnqbctx.html