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

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. codevs1039整数的k划分-思考如何去重复

    题目描述将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序).例如:n=7,k=3,下面三种划分方案被认为是相同的.1 1 51 5 15 1 1问有多少种不同的分法.输入描述输入 ...

  2. js arrow function return object

    js arrow function return object bug filterData: { type: Object, default: () => {}, required: true ...

  3. HTML form All In One

    HTML form All In One action + method onsubmit, submit event action + method <form action="&q ...

  4. VS Code & terminal & Canvas & DOM

    VS Code & terminal & Canvas & DOM https://code.visualstudio.com/docs/editor/integrated-t ...

  5. taro swiper & scroll tabs

    taro swiper & scroll tabs https://taro-docs.jd.com/taro/docs/components/viewContainer/swiper.htm ...

  6. vue $emit bug

    vue $emit bug https://www.cnblogs.com/xgqfrms/p/11146189.html solution https://forum.vuejs.org/t/emi ...

  7. js 创建简单的表单同步验证器

    SyncValidate declare const uni: any; export interface SyncValidateOpt { [key: string]: SyncValidateF ...

  8. 币圈沸腾!SPC空投上线!不要错过!

    币圈最近处于沸腾的时刻,NGK侧链代币SPC已上线钱包,3.0公链NGK生态之SPC空投又来了,NGK的上一个项目BGV投资收益率最高破一千七百倍,NGK官方此次以算力持有者为中心,将发起第二轮福利- ...

  9. 还原Oracle数据库dmp文件(Win系统)

    准备工作: 1.核对数据字符集:   一般Oracle在安装的时候默认是选择ZHS16GBK,如有改动,使用 select userenv('language') from dual;语句查看使用的字 ...

  10. the import java.util cannot be resolve

    重新配置一下build path 的jre,如果不行的话就重新设置jre(在add library中installed JREs)