【JS排序算法:冒泡、选择、插入、归并、快速、希尔、堆、计数】以下是测试函数
//测试排序算法函数//totalNum 测试排序的元素个数//isPrintArrData 是否打印数组数据function testSort( totalNum, isPrintArrData ){//生成测试数据arr = makeData( totalNum, isPrintArrData );//1>调用测试函数,对 快速排序 算法进行测试TestOneSortFunc( arr, 'quickSort', ", 0, arr.length - 1" , "快速排序", isPrintArrData );//2>调用测试函数,对 希尔排序 算法进行测试TestOneSortFunc( arr, 'shellSort', "", "希尔排序", isPrintArrData );//3>调用测试函数,对 计数排序 算法进行测试TestOneSortFunc( arr, 'countingSort', "", "计数排序", isPrintArrData );//4>调用测试函数,对 插入排序 算法进行测试TestOneSortFunc( arr, 'heapSort', "", "插入排序", isPrintArrData );//5>调用测试函数,对 堆排序 算法进行测试TestOneSortFunc( arr, 'heapSort', "", "堆排序", isPrintArrData );//6>调用测试函数,对 归并排序 算法进行测试TestOneSortFunc( arr, 'mergeSort', ",0, arr.length", "归并排序", isPrintArrData );//7>调用测试函数,对 选择排序 算法进行测试TestOneSortFunc( arr, 'selectionSort', "", "选择排序", isPrintArrData );//8>调用测试函数,对 冒泡排序 算法进行测试TestOneSortFunc( arr, 'bubbleSort', "", "冒泡排序", isPrintArrData );}//测试一个排序算法函数function TestOneSortFunc( arr, funcName, funcOtherArgv, textName, isPrintArrData ){console.log( "---------" );//arr = makeData( totalNum );console.log( textName + ":" );//console.log( "原始数据:" );//console.log( arr );//正序arr1 = arr.slice();console.time( "-正序耗时:" );//eval( funcName + "(arr1, 0, arr1.length - 1, false)" );//, 0, arr1.length - 1eval( funcName + "(arr1"+ funcOtherArgv +", false)" );console.timeEnd( "-正序耗时:" );if( isPrintArrData ){console.log( "正序排序结果:" );console.log( arr1 );}//逆序arr2 = arr.slice();console.time( "-倒序耗时:" );//eval( funcName + "(arr2, 0, arr2.length - 1, true)" );//, 0, arr2.length - 1eval( funcName + "(arr2"+ funcOtherArgv +", true)" );console.timeEnd( "-倒序耗时:" );if( isPrintArrData ){console.log( "倒序排序结果:" );console.log( arr2 );}}//数据生成函数function makeData( totalNum, isPrintArrData ){var arr = [];var i = totalNum;console.log( "---------" );console.log( "正在生成 " + totalNum + "个无序数..." );while( i-- ){arr.push( Math.floor( Math.random() * totalNum ) );}console.log( "生成 " + totalNum + "个无序数完成" );if( isPrintArrData ){console.log( "原始无序数据:" );console.log( arr );}return arr;}如果需要打印每个算法的排序结果,把 testSort() 的第二个参数设置为true即可
推荐阅读
- 算法,凭什么判定成年男人全是色狼?
- C语言希尔排序算法
- 十分钟搞定分布式一致性算法
- HotStuff算法详解
- 有点难度,几道和「滑动窗口」有关的算法面试题
- 机器学习算法中如何执行回归数据的特征选择
- 百度上线惊雷算法3.0
- 比RSA加密更快更安全的加密算法ECC
- 轻松理解机器学习算法:Adaboost算法
- 论淘宝搜索推荐算法排序机制及2021年搜索变化的方向
