数据排序:选择排序和冒泡排序

选择排序法基本思路:选择排序法是将一堆数,从前往后逐个扫描。比如说有十个数,从前往后扫描一遍就在前面排好了一位数。那么要排好十个数就要扫描九遍(九个数排好了第十个数就不用排喽)。这样就需要在最外层放一个大循环,控制扫描九次,在扫描一遍的过程需要从前往后边扫描要边记录最小的那个值,最后一步进行替换。在大循环里,也就是从前往后扫描一遍,这需要另一个小循环,从前往后一个一个的读数据,这里要注意写代码的细节:因为在前面排好一个数这个数就不用扫描了,也就是每次扫描的起点是上一次扫描的后一位数,那么在写代码的时候就要注意让小循环循环的起点从上次排好的位置开始。这个小循环在控制从前往后读数的同时也要比较记录最小的数(记住是比较记录,此时不需要进行数字位置的互换,只需记录最小值的“位置”)。然后在扫描一遍完毕后,要进行数字交换,将最小数放到此次扫描的最前面,也就是和此次扫描最前面的那个数交换,而最前面的那个数就要在每次扫描之前标记好,所以要在大循环下紧跟一个k=i(仔细观察就会发现大循环第一次循环时扫描是从第一个数开始的,第二次循环扫描是从第二个数开始的,所以k=i)

起泡法的基本思路:每次将相邻两个数比较,将小的调到前面。如果有n个数,则一共要进行n-1趟比较,每一趟中要进行n-j次两两比较。如:在第1趟比较要进行n-1次两两比较,在第2趟中比较要进行n-2次两两比较,在第j趟中要进行n-j次两两比较。实例:若有6个数:9,8,5,4;2,0,第一趟的第1次先将最前面的两个数9和8对调,即这个数组变成了[8,9,5,4,2,0];第2次将第2个数和第3个数比较后9比5大,则9和5对调,即这个数组变成了[8,5,9,4,2,0],………如此共进行5次,得到[8,5,4,2,0,9]的顺序。可以看到,最大的数9已“沉底”,成为最下面一个数,而小的数“上升”,最小的数0已向上“浮起”一个位置。经过第1趟(共5次比较与交换)后已得到最大的数9。然后按以上方法进行第2趟比较,对余下的前面5个数字(8,5,4,2,0)进行新一轮的比较,以便使次大的数8“沉底”,9不再参与比较,得到[5,4,2,0,8,9],就这样循环下去得到[0,2,4,5,8,9]这样排列的数组。

选择法和起泡法区别:这两种方法是升序还是降序也是同样方法,只需要修改比较大小的符号,或者直接在输出的时候设置循环初始条件就行。选择排序的方法,即使没有学过算法,日常生活中一般人遇见排序问题时,大多数用的就是选择排序。 进行由大到小的排序时,通常就是从中先挑出最大的,再从剩下来的中间挑出最大的,这样挑完,就排好序了,很直观好懂。

选择法与气泡法详细解释:点击跳转(转载)

更多详细排序方法:点击跳转 (转载) 

posted @ 2021-11-25 17:01  iZJ"Qq4577105  阅读(116)  评论(0编辑  收藏  举报