【生成规定数量不重复随机数】

function creatRandom( num ){

    var randomLen = num,
ranArr = [],
thisRan = null,
whileOff = false,
cnt = 0; //初始化push进去1个
thisRan = Math.floor( Math.random()*randomLen );
ranArr.push(thisRan); for( var i=1; i<randomLen; i++ ){ while( true ){
//在生成1个随机数开始判断之旅
thisRan = Math.floor( Math.random()*randomLen ); //whileOff为终止while的开关,只有当thisRan生成了1个与现有数字都不相同的数字时才会关闭while循环
whileOff = true;
for( var k=0; k<ranArr.length; k++ ){
if( thisRan == ranArr[k] ){
whileOff = false;
break;
}
} if( whileOff ){
ranArr.push(thisRan);
break;
}
}
} return ranArr; }

【冒泡排序】

function bubbling( arr ){

    var arr = arr,
arrLen = arr.length,
newArr = [],
broker = null; var oldDate = new Date();
for( var i=0; i<arrLen; i++ ){ for(var j=0; j<arrLen-1-i; j++){
if( arr[j] > arr[j+1] ){
broker = arr[j];
arr[j] = arr[j+1];
arr[j+1] = broker;
} } }
var newDate = new Date();
console.log(' ');
console.log('冒泡排序法'+ arrLen +'个数字花时:'+ (newDate-oldDate) +'毫秒');
console.log( arr ); }

【鸡尾酒排序】


function cocktail( arr ) {

    var arr = arr,
arrLen = arr.length,
newArr = [],
broker = null; var oldDate = new Date();
for( var i=0; i<arrLen; i++ ){ for(var j=i; j<arrLen-1-i; j++){
if( arr[j] > arr[j+1] ){
broker = arr[j];
arr[j] = arr[j+1];
arr[j+1] = broker;
} } for(var k=arrLen-2-i; k>i; k--){
if( arr[k] < arr[k-1] ){
broker = arr[k];
arr[k] = arr[k-1];
arr[k-1] = broker;
} } }
var newDate = new Date();
console.log( ' ' );
console.log('鸡尾酒排序法'+ arrLen +'个数字花时:'+ (newDate-oldDate) +'毫秒');
console.log( arr ); }

【选择排序】

function selection( arr ){

var arr = arr,
arrLen = arr.length,
newArr = [],
broker = null;

var cnt = 0,
a = cnt;

var oldDate = new Date();

while( cnt < arrLen ){

for(var i=cnt; i<arrLen; i++){

if( arr[i] < arr[a] ){
a = i;
}
}

broker = arr[cnt];
arr[cnt] = arr[a];
arr[a] = broker;
cnt++;
a = cnt;

}

var newDate = new Date();
console.log( ' ' );
console.log('选择排序法'+ arrLen +'个数字花时:'+ (newDate-oldDate) +'毫秒');
console.log( arr );

}

【插入排序】

function insertion( arr ){

    var arr = arr,
arrLen = arr.length,
newArr = [],
broker = null; var cnt = 0; var oldDate = new Date();
for(var i=0; i<arrLen-1; i++){ cnt = i; var get = arr[cnt+1];
while( cnt >= 0 && arr[cnt] > get ){
arr[cnt+1] = arr[cnt];
cnt--;
}
arr[cnt+1] = get; }
var newDate = new Date();
console.log( ' ' );
console.log('插入排序法'+ arrLen +'个数字花时:'+ (newDate-oldDate) +'毫秒');
console.log( arr ); }

【未完工的二分插入排序】

//未完工

function binaryInsertion( arr ){

    var arr = arr,
arrLen = arr.length,
newArr = [],
broker = null; var oldDate = new Date();
for(var i=0; i<arrLen-1; i++){ var cnt = i;
var get = arr[cnt+1];
var tIndex = 0; if( cnt >= 2000 ){ console.log( a ); var j = 1/2;
var a = Math.floor( (cnt+1)*j );
var oldA = 0; while( true ){ var dif = get - arr[a];
if( dif == 0 || dif == 1 ){ while( get == arr[a] ){
a++;
}
tIndex = a;
break; } if( dif == -1 && a>0 ){
a--;
tIndex = a;
break;
} if( Math.abs( oldA - a ) <= 10 ){
var l = oldA<a ? oldA : a;
for(var k=l,kLen=Math.abs( oldA - a ); k<kLen-1; k++){
if( arr[k] == get ){
tIndex = k;
break;
}
}
} //向右
if( dif > 1 ){
oldA = a;
j /= 2;
a = a + Math.floor( (cnt+1)*j );
} if( dif < -1 ){
oldA = a;
j /= 2;
a = a - Math.floor( (cnt+1)*j );
} } } while( cnt >= tIndex && arr[cnt] > get ){
arr[cnt+1] = arr[cnt];
cnt--;
}
arr[cnt+1] = get; }
var newDate = new Date();
console.log( ' ' );
console.log('二分插入排序法'+ arrLen +'个数字花时:'+ (newDate-oldDate) +'毫秒');
console.log( arr ); }

备注:

得益于【http://www.cnblogs.com/eniac12/p/5329396.html#s31】而做的这个js版本,做到二分排序实在做不下去了,主要是不知道怎样验证,其次心力憔悴,先放放,以后学习算法时再回来看看。

js【生成规定数量不重复随机数】、【冒泡排序】、【鸡尾酒排序】、【选择排序】、【插入排序】、【未完工的二分插入排序】------【总结】的更多相关文章

  1. 动态生成16位不重复随机数、随机创建2位ID

    /** 1. * 动态生成16位不重复随机数 * * @return */ public synchronized static String generate16() { StringBuffer ...

  2. c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)

    1.冒泡排序法: 假设有n个数需要按从小到大排序,冒泡排序的原理是,在这一排数字中,将第一个数与第二个数比较大小,如果后面的比前面的小,就将他们交换位置.然后再比较第二个和第三个,再交换,直到第n-1 ...

  3. 冒泡排序Vs直接选择排序

    什么是排序?为什么要使用排序?事实上我们生活中处处都用到了排序.拿字典来说,如今,我们要在字典中查找某个字(已经知道这个字的读音),首先.我们须要依据这个字的读音,找到它所所在文件夹中的位置,然后依据 ...

  4. java 冒泡排序法、选择排序

    1.冒泡排序 /* * 冒泡排序 * 外层控制循环多少趟,内层控制每一趟的循环次数 */ public class Test08 { public static void main(String[] ...

  5. JS生成指定范围内的随机数(支持随机小数)

    直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...

  6. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  7. 冒泡排序与简单选择排序——Java实现

    1.冒泡排序 1)原理说明:反复遍历要排序的数列,一次比較两个元素,假设他们的顺序错误就把他们交换过来.走訪数列的工作是反复地进行直到没有再须要交换,也就是说该数列已经排序完毕. 2)代码实现: pa ...

  8. c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法

    本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...

  9. Java学习笔记day07_琐碎知识_水仙花数_ASCII码_冒泡排序_简单选择排序_折半查找

    琐碎知识: 水仙花数, ASCII码, 冒泡排序, 简单选择排序, 折半查找 1.水仙花数 每位数的平方的和等于本身. 如100到999之间的水仙花数满足: 个位的平方+十位的平方+百位的平方 = 本 ...

随机推荐

  1. JVM升华篇

    01 Garbage Collect(垃圾回收) 1.1 如何确定一个对象是垃圾? 要想进行垃圾回收,得先知道什么样的对象是垃圾. 1.1.1 引用计数法 对于某个对象而言,只要应用程序中持有该对象的 ...

  2. 深入理解gradle中的task

    目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 深入理解g ...

  3. 018-019 NET5_内置容器支持依赖注入+IServiceCollection的生命周期

    概念: DI依赖注入: IServiceCollection仅支持构造函数注入 什么是依赖注入? 如果对象A依赖对象B,对象B依赖对象C,就可以先构造对象C,然后传递给对象B,再把对象B传递给A.得到 ...

  4. HTML教程(看完这篇就够了)

    HTML教程 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言.您可以使用 HTML 来建立自己的 WEB 站点,HTML 运 ...

  5. Bash on Ubuntu on Windows ( Windows Subsystem for Linux)

    1 #  Bash on ubuntu on Windows http://www.cnblogs.com/anonymous-ufo/p/6143480.html 1 1 如何启用Bash on u ...

  6. js uppercase first letter

    js uppercase first letter const str = `abc`; str.slice(0, 1).toUpperCase(); // "A" str.sli ...

  7. npm version ^ meaning

    npm version ^ meaning ^ 更新版 https://docs.npmjs.com/cli/v6/commands/npm-version https://github.com/ge ...

  8. React.memo All In One

    React.memo All In One https://reactjs.org/docs/react-api.html#components React.memo const MyComponen ...

  9. 前端监控平台 & 架构

    前端监控平台 & 架构 1px 透明的 gif 字节小, 43 bytes 支持跨域, 兼容场景多,零配置 https://en.wikipedia.org/wiki/GIF demo htt ...

  10. Chrome & console.log & color & js

    Chrome & console.log & color & js console.log & color // OK log(`%cchat_list =\n%c${ ...