排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序
计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。
我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确
实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高
手指点。呵呵。
普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为
他们的相对顺序不变。例如 这里排序之后是 稳定就是排序后第
一个 就是排序前的第一个 ,第二个 就是排序前第二个 ,第三个 就是排序前的第三
个 。同理 也是一样。这里用颜色标明了。不稳定呢就是他们的顺序不应和开始顺序一
致。也就是可能会是 这样的结果。
普及一下原地排序:原地排序就是指不申请多余的空间来进行的排序,就是在原来的排
序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并排序,计数排
序等不是原地排序。
感觉谁最好,在我的印象中快速排序是最好的,时间复杂度:,不稳定排序。原
地排序。他的名字很棒,快速嘛。当然快了。我觉得他的思想很不错,分治,而且还是原
地排序,省去和很多的空间浪费。速度也是很快的,。但是有一个软肋就是如果已
经是排好的情况下时间复杂度就是 不过在加入随机的情况下这种情况也得以好转,而
且他可以做任意的比较,只要你能给出两个元素的大小关系就可以了。适用范围广,速度
快。
插入排序: 的时间复杂度,稳定排序,原地排序。插入排序是我学的第一个排序,速
度还是很快的,特别是在数组已排好了之后,用它的思想来插入一个数据,效率是很高的
因为不用全部排。他的数据交换也很少,只是数据后移,然后放入要插入的数据。(这里
不是指调用插入排序,而是用它的思想)。我觉得,在数据大部分都排好了,用插入排序
会给你带来很大的方便。数据的移动和交换都很少。
插入排序主要思想是:把要排序的数字插入到已经排好的数据中。(我自己理
解的哈)。例如 是已经排好的序,我们将 插入到他们中,时插入之后也是排好序
的。这里显而易见是插入到 的后面。变为
实现思路:插入排序就是先是一个有序的数据,然后把要插入的数据插到指定的位置,而
排序首先给的就是无序的,我们怎么确定先得到一个有序的数据呢?答案就是:如果只有
一个,当然是有序的咯。我们先拿一个出来,他是有序的,然后把数据一个一个插入到其
中,那么插入之后是有序的,所以直到最后都是有序的。。哈哈。结果就出来了!
当然在写的时候还是有一个技巧的,不需要开额外的数组,下标从第二个元素开始遍历直
到最后一个,然后插入到前面已经有序的数据中。这样就不会浪费空间了。插入排序用处
还是很多的,特别是链表中,因为链表是指针存放的,没有数组那么好准确的用下标表示
插入是简单有效的方法。嘻嘻。。废话少说,
源代码奉上:
!!插入排序从小到大,"## 为要排序的数据$% 为数据的个数该排序是稳定的排序
&'()'"##*+$%
,-'.$%.//!!遍历数组,进行插入排序
0
评论0
最新资源