任务1:冒泡排序
任务描述:对一组数字进行冒泡排序,按照从小到大的顺序排列。
任务分析:
1、冒泡排序比较的轮数是数组长度减1。
2、每轮比较的次数等于数组的长度减当前的轮数
任务实现:
<script>
var arr = [98, 31, 5, 27, 2, 78];
console.log('待排序数组:' + arr);
for (var i = 1; i < arr.length; i++) { // 控制需要比较的轮数
for (var j = 0; j < arr.length - i; j++) { // 控制参与比较的元素
if (arr[j] > arr[j + 1]) { // 比较相邻的两个元素
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log('排序后的数组:' + arr);
</script>
任务2:插入排序
任务描述:对一组数字进行插入排序,按照从小到大的顺序排列。
任务分析:插入排序比较的轮数与无序数组的长度相等,每次插入时,将无序数组元素与有序数组中的所有元素进行比较,比较后找到对应位置插入,最后即可得到一个无序数组。
任务实现:
<script>
var arr=[98,7,65,54,12,6];
console.log("待排序的数组:"+arr); //待排序数组
//按照从小到大的顺序排序
for (var i=1;i<arr.length;i++){ //遍历无序数组索引
//遍历有序数组,将无序数组中的元素插入有序数组中
for(var j=i;j>0;j--){
if(arr[j-1]>arr[j]){
var temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}
//输出从小到大排序后的数组
console.log("排序后的数组"+arr);
</script>
【训练一】:利用冒泡排序将数据【11,58,60,13,79,90】中的元素从大到小顺序排序。
参考答案: