冒泡排序法(假定 从小到大排序)
比如给定6个元素如下:
3,6,8,1,34,25 (这是最初的样子)
注意:相邻两个之间相比,如果前面的数字>后面的数字,就进行交换
第一趟,(为了确定最后一个数字) 总共比较次数5次 过程如下
第一次(第一位和第二位进行比过之后的结果) 3,6,8,1,34,25
第二次(第二位和第三位进行比过之后的结果) 3,6,8,1,34,25
第三次(第三位和第四位进行比过之后的结果) 3,6,1,8,34,25
第四次(第四位和第五位进行比过之后的结果) 3,6,1,8,34,25
第五次(第五位和第六位进行比过之后的结果) 3,6,1,8,25,34
(第一趟的最终结果,把最大值找出来了,是34,我们放到末尾)
第二趟,(为了确定倒数第二个数字) 比较次数4 过程如下(由于第一趟已经把最大值34找出来了,那我们现在的数字就只剩下3,6,1,8,25,在第一次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
第一次(第一位和第二位进行比过之后的结果)3,6,1,8,25, 34
第二次(第二位和第三位进行比过之后的结果)3,1,6,8,25, 34
第三次(第三位和第四位进行比过之后的结果)3,1,6,8,25, 34
第四次(第四位和第五位进行比过之后的结果)3,1,6,8, 25,34
(第二趟的最终结果,我们也把最大值找出来了,是25,我们也给它往后续)
第三趟,(为了确定倒数第三个数字) 比较次数3 过程如下(由于第二趟已经把最大值25找出来了,那我们现在的数字就只剩下3,1,6,8 在第二次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
第一次(第一位和第二位进行比过之后的结果)1,3,6,8, 25,34
第二次(第二位和第三位进行比过之后的结果)1,3,6,8, 25,34
第三次(第三位和第四位进行比过之后的结果)3,1,6, 8,25,34
(第三趟的最终结果,我们也把最大值找出来了,是8,我们也给它往后续)
第四趟,(为了确定倒数第四个数字) 比较次数2 过程如下(由于第三趟已经把最大值8找出来了,那我们现在的数字就只剩下3,1,6 在第三次的那个最终结果上,我们还按照这个方法,从第一个数字3开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
第一次(第一位和第二位进行比过之后的结果)1,3,6, 8,25,34
第二次(第二位和第三位进行比过之后的结果)1,3, 6,8,25,34
(第四趟的最终结果,我们也把最大值找出来了,是6,我们也给它往后续))
第五趟,(为了确定倒数第五个数字) 比较次数1 过程如下(由于第四趟已经把最大值6找出来了,那我们现在的数字就只剩下3,1 在第四次的那个最终结果上,我们还按照这个方法,从第一个数字开始往后相邻之间挨个挨个进行比较,如果前面的数字比后面的大,就交换,过程如下:
第一次(第一位和第二位进行比过之后的结果)1,3,6,8,25,34
(第五趟的最终结果,我们也把最终结果找出来了,是3,那么此时,我们就全部排序完了)
<script>
//冒泡排序 ,默认是升序 【13,6,8,1,34,25】
function sortArray(tempArr) {
// i:表示趟数
//通过总结上面的文字分析过程,我们会发现,假如一个数组内是6位元素,那么趟数就得有5趟,所以我们底下这个i写的是i<tempArr.length
for (let i = 1; i < tempArr.length; i++) {
document.write('<h1>第' + i + '趟</h1>')
// j:表示前面元素的下标
// 每一趟里面,都要进行前后两个元素的比较
//通过总结上面的文字分析过程,我们会发现一个规律,趟数+每一趟里面比较的次数=元素个数。比如第一趟,(为了确定最后一个数字),其实就比较了5次,那么1+5=6
//所以,底下关于j的取值,其实是用第一趟的分析过程,往进代得出的规律,所以底下这个j的取值写的是j < tempArr.length - i
for (let j = 0; j < tempArr.length - i; j++) {
// 当前面的元素比后面元素大了 则交换
// j+1 是紧跟在j后面的元素的下标
if (tempArr[j] > tempArr[j + 1]) {
let temp = tempArr[j];
tempArr[j] = tempArr[j + 1];
tempArr[j + 1] = temp;
}
}
document.write('<h1>' + tempArr + '</h1>')
}
}
let result=sortArray([4,7,2,8,5,9])
document.writez(result)
</script>