标签:
近日开始学习算法,所看课本为清华大学出版社的《算法设计与分析基础》,对简单的数据结构进行了复习,已经学习了算法效率分析基础。
本篇开始对所学算法的思想进行实际JS编码,看学习的进度,每日写一篇学到的算法,以上为背景。
蛮力法是一种直接解决问题的方法,常常基于问题的描述和所涉及的概念定义;所谓的“力”,指的是计算机的计算能力。
优点是①可解决广阔的领域各种问题;②可以产生一些合理的算法;③实例不多时,可用一种能接受的速度求解;④可解决一些小规模问题实例;⑤可作为研究或教学目的,作为其他算法的准绳
选择排序法:
一、步骤:
①扫描整表,找到它的最小元素,和第一个元素进行交换
②从二个元素开始扫描列表,找到剩下中最小的元素和第二个元素进行交换
③...以此类推
二、JavaScript代码实现
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>selectsort</title> 6 </head> 7 <body> 8 </body> 9 <script type="text/javascript"> 10 var arr = [98,89,78,9,4,5,65,34,12,3]; 11 for(var i = 0; i < arr.length - 1; i++){ 12 var min = i; //假设最小元素编号为i 13 14 //扫描余下数组,存下最小元素的编号 15 for(var j = i+1; j < arr.length; j++){ 16 if(arr[j] < arr[min]){ 17 min = j; 18 } 19 } 20 21 //交换i个与第min个的位置,比如第0次循环后,最小的数与第0个数交换 22 var temp = arr[i]; 23 arr[i] = arr[min]; 24 arr[min] = temp; 25 } 26 console.log(arr); 27 </script> 28 </html>
三、算法分析
对于选择算法分析是比较简单的,其输入规模由元素的个数来决定,本算法的基本操作是最内层循环中的比较方法。
比较方法的执行次数:Σ[i=0 to n-1]Σ[j=i+1 to n] 1 = Σ[i=0 to n-1](n-(i+1)+1) = n(n+1)/2;因此对于任何输入来说,选择排序都是一个Θ(n2)的算法;而键的交换次数为Θ(n),这个特性超过了很多其他的排序算法
标签:
原文地址:http://www.cnblogs.com/likaopu/p/5671517.html