冒泡算法
冒泡算法,是一个比较简单的算法,通过前一个数据和后一个数据进行比较,将所需要的值慢慢比较上去,下面先由小到大进行举例,一个数组里面有四个排序不规则的元素为[4,0,6,2],第一次比较,4和0,4往后走,变为[0,4,6,2];第二次比较4和6,不变,还是[0,4,6,2];第三次比较6和2,6往后走,变为[0,4,2,6],比出第一轮最大值为6;将剩下三个值在进行比较,第一次比较0和4,不变,还是[0,4,2];第二次比较4和2,4往后走,变为[0,2,4],比出第二轮最大值4;将剩下最后两个进行比较,第一次比较0和2,不变,还是[0,2],比出第三轮最大值2,因此整个数组变成了[0,2,4,6]。设两个变量来储存比较的轮数和次数,i来储存比较的轮数,小于数组的元素个数-1;j来储存比较的次数,数组的元素个数-i-1。,想实现从大到小,即将14行代码的大于号改为小于号即可。
图1 从小到大
图2输出结果
选择排序算法
选择排序算法与冒泡算法的区别是,选择排序算法是将一个数和后面的每一位进行比较,得出需要的数,还是由小到大进行举例。数组[4,0,6,2],第一次比较,4和0,0比4小,位置互换,变为[0,4,6,2];第二次比较,0和6,不变,还是[0,4,6,2];第三次比较,0和2,不变,还是[0,4,6,2],第一轮比较出最小值为0;剩下[4,6,2]三个数进行比较,第一次比较,4和6,不变,还是[4,6,2];第二次比较,4和2,2比4小,位置互换,变为[2,6,4],第二轮比较出最小数值为2;剩下[6,4]两个数,第一次比较,6和4,6比4大,位置互换,变为[4,6],第三轮比较出最小数值为4。整个过程结束,得出[0,2,4,6]。定义两个变量i和j,i依然是比较轮数,小于元素个数-1,j是比较次数,j的值永远是当前i的值的下一个,,因为每一轮比较出一个最小值,由下一个开始比较,如第一轮比较出a[0]是0,下一个就从a[1]开始,因此j=i+1,又因为第一个数总是能每一次与最后一个数进行比较,所以j小于数组总长度。
图3 从小到大
图4 输出结果