甄姬14 甄姬14
热爱Microsoft
关注数: 155 粉丝数: 529 发帖数: 19,201 关注贴吧数: 56
冒泡排序与选择排序浅讲 萌新瑟瑟发抖,长段的代码码不出来,只能写写短的。高手勿喷。 导言:【装正经】排序问题是实际编程过程中非常常见的问题,譬如根据学号/身份证号等排序报表,譬如按照姓名排序。这里提供两个排序问题的算法。本文以整数型数值,数组成员数不多(仅10个),从小到大为例,进行算法讲解。 ———— 下图是冒泡排序的实现方法。下图是选择排序的实现方法。运行结果是一样的。这两段代码看上去非常的相似,实际上大有不同。 冒泡排序通过不断地比较两个相邻的数值,将比较大的排在后面。当外层的循环完成一次时,即i=2之前,最大的数已经位于数组的最末端。外层循环完成第二次时,第二大的数位于数组的倒数第二的位置。以此类推,完成了排序。 对于n个成员的数组,倘若初始数组和预期的排序恰好是反序的,很显然,外围的循环需要n次,内层的循环需要n-i次,简单地,我们可以认为其时间复杂度为 。其含义是与数组成员数的二次方成正比。 选择排序的工作流程是,在所有数中选出最小者,放在数组最前,再在剩下的数中选出第二小者,放在数组第二位的位置。 下图是一种更为典型的选择排序法。此种方法需要多一个变量,却可以减少赋值运算的次数。其交换仅10次,均位于外层的循环下。内层的循环中只有简单的赋值。 虽然选择排序法的时间复杂度也是,但是在n较小的情况下,它可以更快地完成任务。 —————— 另外,易语言自带了数组排序的函数。于是我机智的水了一贴。
首页 1 2 下一页