选择排序法
每一轮在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录,存入数据,共需比较n-i次。
排序过程
- 从n个变量中选出一个a(i)(题目给出由大到小),假设a(i)是最大的;
- a(i)与剩下的变量依次比较,比较结果:一是a(i)仍是最大的,继续;二是a(j)最大,那就a(j)代替a(i)的位置,继续比较;
- 每比较一轮,将选出的最大值存入a(1)的位置,剩下的变量继续循环1-3步骤。
- 第i轮比较进行的操作是:从后n-i+1个变量中选出最大者存入a(i)的位置,共需比较n-i次。
- 最后选出数组顺序,依次由大到小排列。
冒泡排序法
小数沉底,大树上浮。参加比较的两个元素是相邻的,两轮比较可以找出一个本轮最小放在本轮最后,使所有大数前移。
比较
选择排序中,最伟大的思想是选择出一个数,假设这个数是最大的。假设的思想在计算机编程中用到的时候也很多;冒泡排序中最大的特点就是两两相邻交换,所以交换次数比较。因此,小编开始的时候就认为选择排序比较容易,这是一个误区。经过老师的指导,小编才知道从复杂度的角度来讲,这两种排序算法是相同的。复杂度分为时间和空间复杂度。时间复杂度是指计算时间,空间复杂度是指占用内存等。此消彼长,大家应该就懂了吧。
总结
通过接触这两个算法,从基础定义入手,我们进行了学习。收获了很多,是不是?
- 理论与实践的完美结合,知识才会被我们消化吸收;
- 比较学习让我们的知识建立联系,发散思维,构建知识网;
- 思想最重要,具体算法是有小到大还是倒过来由大到小都没有问题,万变不离其宗;
- 知识是无垠的,接触新知识的时候我们要做到盲人摸象,囫囵吞枣,又陌生到熟悉这是快乐的学习。
视觉直观感受 7 种常用的排序算法 - 文章 - 伯乐在线 http://blog.jobbole.com/11745/
专栏:白话经典算法 - 博客频道 - CSDN.NET http://blog.csdn.net/column/details/algorithm-easyword.html