数据结构之排序总结

2019-11-04  本文已影响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]升序

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

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

递归

上一篇下一篇

猜你喜欢

热点阅读