冒泡排序,第一趟将最大(小)值确定并放在确定的位置上。于是第二趟我们比较的次数就减一。
例:18, 20, 48, 76, 20, 38, 87, 90, 37, 65, 65, 67, 95 (降序排列)
第一趟把最大值找到放在第一个位置上,18和20比较:18>20于是20和18交换;
此时数组为:20,18,48, 76, 20, 38, 87, 90, 37, 65, 65, 67, 95
18和48比较:18<48,于是18和48不交换;
此时数组仍为:20,18,48, 76, 20, 38, 87, 90, 37, 65, 65, 67, 95
48和76比较:48<76,于是48和76不交换;
此时数组仍为:20,18,48, 76, 20, 38, 87, 90, 37, 65, 65, 67, 95
76和20比较:76>20,于是76和20交换;
此时数组为:此时数组仍为:20,18,48, 20, 76, 38, 87, 90, 37, 65, 65, 67, 95
依次类推:当第一趟跑完后,那么95(最大值)就排在了最后的位置上,此时也只有95的位置被确定。(此时比较的数字的个数为:数组总长度)
那么当第二趟跑完,90(倒数第二大的值)的位置就确定了。(此时比较的数字的个数为:数组总长度-1)
第三趟跑完,87(倒数第三大的值)的位置就确定。(此时比较的数字的个数为:数组总长度-2)
冒泡排序(升序)就像鱼吐泡一样,最大值最先确定。 |