javascript 冒泡排序法 插入排序法 选择排序法 归并排序法 堆排序法
来源:互联网 发布:富人俱乐部 知乎 编辑:程序博客网 时间:2024/05/26 12:58
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>sort</title><script type="text/javascript">var arr=new Array();//产生十个随机数for(var i=0;i<10;i++){ arr.push(parseInt(Math.random()*100));}document.writeln(arr); /** * 冒泡排序法 * @param arr 数组 * @return 排序后的数组 */var BubbleSort=function(arr){ var arrLen=arr.length; for(var i=0;i<arrLen;i++){ for(var j=arrLen-1;j>i;j--){ if(arr[j]<arr[j-1]){ temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } return arr;} /** * 插入排序法 * @param arr 数组 * @return 排序后的数组 */var InsertSort=function(arr){ var arrLen=arr.length; for(var i=1;i<arrLen;i++){ temp = arr[i]; for(var j=i ; j>0 && temp < arr[j-1] ; j--){ arr[j]=arr[j-1]; } arr[j]=temp; } return arr;} /** * 选择排序法 * @param arr 数组 * @return 排序后的数组 */var SelectSort=function(arr){ var arrLen=arr.length; for(var i=0;i<arrLen;i++){ var minIndex = i; for(var j=i;j<arrLen;j++){ if(arr[minIndex]>arr[j]) { minIndex=j; key = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = key; } } } return arr;} /** * 归并排序法合并 * @param arr 数组 * @return 合并的数组 */var Merge=function(left, right) { var re = []; while(left.length > 0 && right.length > 0) { if(left[0] < right[0]) { re.push(left.shift()); } else { re.push(right.shift()); } } return re.concat(left).concat(right); } /** * 归并排序法 * @param arr 数组 * @return 排序后的数组 */var MergeSort=function(arr){ if(arr.length == 1) return arr; var arrLen=arr.length; var m = Math.floor(arr.length / 2); var left = arr.slice(0, m); var right = arr.slice(m); return Merge(MergeSort(left), MergeSort(right)); } /** * 堆排序法 * @param arr 数组 * @return 排序后的数组 */ var HeapSort=function(items) { items = array2heap(items); //将数组转化为堆 for(var i = items.length - 1; i >= 0; i--) { items = swap(items, 0, i); //将根和位置i的数据交换(用于将最大值放在最后面) items = moveDown(items, 0, i - 1); //数据交换后恢复堆的属性 } return items; } /** * 将数组转换为堆 * @param arr 数组 * @return 堆 */ var array2heap=function(items) { for(var i = Math.ceil(items.length / 2) - 1; i >= 0; i--) { items = moveDown(items, i, items.length - 1); //转换为堆属性 } return items; } /** * 转换为堆 * @param items 数组 * @param first 第一个元素 * @param last 最后一个元素 * @return 堆 */ var moveDown=function(items, first, last) { var largest = 2 * first + 1; while(largest <= last) { if(largest < last && items[largest] < items[largest + 1]) { largest++; } if(items[first] < items[largest]) { items = swap(items, first, largest); // 交换数据 first = largest; //往下移 largest = 2 * first + 1; } else { largest = last + 1; //跳出循环 } } return items; } /** * 交换数据 * @param items 数组 * @param index1 索引1 * @param index2 索引2 * @return 数据交换后的数组 */ var swap=function(items, index1, index2) { var tmp = items[index1]; items[index1] = items[index2]; items[index2] = tmp; return items; }var arr =HeapSort(arr);document.writeln("<br>");document.writeln(arr);</script></head><body></body></html>
排序算法介绍和使用场景:
http://blog.csdn.net/myjava_024/article/details/3220319
http://en.wikipedia.org/wiki/Sorting_algorithm#Merge_sort
- javascript 冒泡排序法 插入排序法 选择排序法 归并排序法 堆排序法
- 归并排序学习总结,递归法&&插入排序&&冒泡排序&&选择排序&&快速排序
- Java排序|冒泡法排序|插入排序|选择排序
- 排序:插入排序/选择排序/交换排序(冒泡法)
- php排序法--冒泡排序,选择排序,插入排序
- 排序(插入排序、希尔排序、堆排序、归并排序、快速排序法)
- 【java】冒泡排序法、选择排序法、插入排序法
- 插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 冒泡排序 快速排序 选择排序 堆排序 直接插入排序 希尔排序 归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
- 冒泡排序,插入排序,快速排序,归并排序,堆排序,选择排序,希尔排序
- 选择法排序,冒泡排序,递归排序
- javascript 排序 冒泡排序法 + 插入排序法
- 排序算法1.插入排序 2.冒泡排序 3.改进的冒泡法 4.归并排序
- 插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序
- 介绍4个常用的排序法。冒泡排序、插入排序、快速排序、选择排序法
- Android中使用cmwap接入点访问互联网的问题及解决办法
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer .
- 关于编程,大学没有传授的10件事
- Nios II IDE 关于win7下cygwin编译报错的处理
- IIS特有问题,网上看了好多都不正确或者不全面,经过试验总结
- javascript 冒泡排序法 插入排序法 选择排序法 归并排序法 堆排序法
- 业务品质是“文火”炖出来的
- php日期函数与php时间函数
- 010脚本编写入门
- 字符编码简介:ASCII,Unicode,UTF-8
- 裁剪图片
- Oracle 常用总结
- HTML 脚本、事件属性
- 读书笔记[Android Beginning 2] chapter 5 Employing Basic Widgets