码迷,mamicode.com
首页 > 编程语言 > 详细

关于算法--蛮力法篇--选择排序

时间:2016-07-14 21:35:29      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:

近日开始学习算法,所看课本为清华大学出版社的《算法设计与分析基础》,对简单的数据结构进行了复习,已经学习了算法效率分析基础。

本篇开始对所学算法的思想进行实际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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!