教学PPT:
知类通达
实事求是,具体问题具体分析:没有“最好”的算法,只有“最合适”的算法。在小规模数据中,冒泡排序简单直接;在海量数据中,快速排序、归并排序优势明显。这体现了 “一切从实际出发” 的马克思主义哲学原理。
“分而治之”——将大问题分解为小问题,解决小问题后合并结果。这与中国传统文化中的 “化整为零”、“大事化小” 的智慧不谋而合。无论是国家制定“五年规划”,还是我们完成一个大型项目,都需要运用分治策略。
任务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】中的元素从大到小顺序排序。
参考答案: