javascript排序 查找算法大全
在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍。为了加深印象,特意把里面的常用的排序、查找算法用js写了一遍
具体的实例在我的github上,大家可以访问的: https://github.com/chenkehxx/practice js_sort.html文件
//js插入排序
function insertSort(arr){
var result =[];
result.push(arr[0]);
for(var i = 1, len = arr.length; i < len; i++){
var el = arr[i];
if(result[i - 1] > el){
for(var j = 0; j < i; j++){
if(result[j] > el){
result.splice(j, 0, el);
break;
}
}
}else{
result.push(el);
}
}
return result;
}
//js的归并排序
function mergeSort(arr){
var len = arr.length;
if(len > 1){
var index = Math.floor(len / 2);
var left = arr.slice(0, index), right = arr.slice(index);
return merge(mergeSort(left), mergeSort(right));
}else{
return arr;
}
function merge(left, right){
var arr = [];
while(left.length && right.length){
if(left[0] < right[0]){
arr.push(left.shift());
}else{
arr.push(right.shift());
}
}
return arr.concat(left, right);
}
}
//js快排
function QuickSort(arr){
if(arr.length <= 1){
return arr;
}
var index = Math.floor(arr.length / 2);
var key = arr.splice(index, 1)[0];
var left = [], right = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] < key){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return QuickSort(left).concat([key], QuickSort(right));
}
//js冒泡
function bubbleSort(arr){
var len = arr.length;
for(var i = 0; i < len; i++){
for(var j = len -1; j > i; j--){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
}
return arr;
//js二分查找
function binarySearch(arr, key, low, hight){
var mid = Math.floor((low + hight) / 2);
var result = -1;
console.log(key, low, hight, mid);
if(key == arr[mid]){
result = mid;
return result;
}else if(key > arr[mid]){
hight = mid - 1;
binarySearch(arr, key, low, hight);
}else{
low = mid + 1;
binarySearch(arr, key, low, hight);
}
return result;
}
常用的其他算法
//js查找两个数组中相同的元素
function findSame(arr1, arr2){
var len1 = arr1.length, len2 = arr2.length;
var i = 0, j = 0, result = [];
while(i < len1 && j < len2){
if(arr1[i] == arr2[j]) {
result.push(arr1[i]);
i++;
j++;
}else if(arr1[i] < arr2[j]){
i++;
}else{
j++;
}
}
return result;
}
//js全排列
function sortAll(arr, flag){
var len = arr.length;
if(len == flag){
console.log(arr);
}else{
for(var i = flag; i < arr.length; i++){
swap(arr, i , flag);
sortAll(arr, flag + 1);
swap(arr, i, flag);
}
}
function swap(arr, i, flag){
var temp = arr[i];
arr[i] = arr[flag];
arr[flag] = temp;
}
}
//js求最大子序列
function max_sub(arr){
var max = 0, temp_sum = 0, len = arr.length;
for(var i =0; i < len; i++){
temp_sum += arr[i];
if(temp_sum > max){
max = temp_sum;
}else if(temp_sum < 0){
temp_sum = 0;
}
}
return max;
}
//js实现中文字段截取无乱码
/*这里应该还需要判断str的长度,因为中文字符应该占2个长度*/
function GBsubstr(str, start, len){
if(str.length < len){
return str;
}else{
var result = '';
var length = start + len;
for(var i = start; i < length; i++){
if(str.charCodeAt(i) > 255){
result += str.substr(i, 2);
i++;
}else{
result += str.substr(i, 1);
}
}
return result;
}
}
javascript排序 查找算法大全的更多相关文章
- 深入JDK源码之Arrays类中的排序查找算法(转)
原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...
- C/C++ 排序&&查找算法(面试)
一.排序 1.冒泡排序 void BubbleSort(int array[],int n) { ; ; ; ; ;i<n - ;i++) /*外循环控制排序的总趟数*/ { flag = ; ...
- Java常用的排序查找算法
public static void main(String[] args) { // bubbleSort(); // int[] a = {20,2,10,8,12,17,4,25,11 ...
- Java数据结构 遍历 排序 查找 算法实现
请查看:http://blog.csdn.net/zhanghao_hulk/article/details/35372571#t13
- Web高级 JavaScript中的算法
算法 排序算法 稳定排序 待排序序列中相等元素在排序完成后,原有先后顺序不变. 非稳定排序 有序度 待排序序列中有序关系的元素对个数. 逆序度 1. 插入排序 遍历有序数组,对比待插入的元素大小,找到 ...
- javascript数据结构与算法--高级排序算法
javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...
- javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较
javascript数据结构与算法--基本排序算法(冒泡.选择.排序)及效率比较 一.数组测试平台. javascript数据结构与算法--基本排序(封装基本数组的操作),封装常规数组操作的函数,比如 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)
1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...
随机推荐
- jquery 缓冲加载图片插件 jquery.lazyload
第一:加入jquery 第二:加入jquery.lazy.load.js文件 第三:在网页中加<script> $(document).ready(function(){ $(" ...
- 对React的理解
转自:http://www.cocoachina.com/webapp/20150721/12692.html 现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了R ...
- echo、print、print_r、printf、sprintf、var_dump的区别比较
一.echoecho() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并不 ...
- WordPress D8 主题当中截取文章首图并显示的函数
取自 WordPress D8 主题; 路径 theme\d8\modules ; if ( ! function_exists( 'deel_thumbnail' ) ) : function de ...
- MYSQL ERROR 1130: Host is not allowed to connect to this MySQL server
今天安装MYSQL遇到MYSQL ERROR 1130: Host is not allowed to connect to this MySQL server, 试了很多办法都不行 skip-gra ...
- hdu 4738
桥的应用! 虽然以前做过强联通分量的题,但刷的很水,所以比赛的时候一直想不起来是桥的应用: 反省一下~~~学习一下! 思路,找到权值最小的桥:用tarjin算法! 代码: #include<cs ...
- Code First:如何实现一个主类中包含多个复类
假设我们在程序中要用到的类的结构是这样的,这里比较特别的是B在A中出现了最少两次 public class B { [Key] public int Id { get; set; } public s ...
- 如何取消Linux下,vi中显示的^M符号
http://www.cnblogs.com/dkblog/archive/2012/02/03/2337187.html dos2unix file_name bash: ./configure: ...
- [收藏转贴]构建RESTful风格的WCF服务
RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台都支持 HTTP 请求. RESTf ...
- 人一生必看的100部电影(全球最佳电影排名榜TOP250)
人一生必看的100部电影(全球最佳电影排名榜TOP250) 人的一生能看多少部电影?假设我们每周都看一部,从10岁看到80岁将会看3640部.但是我们也不可能喜欢这全部的电影.大多数的可能,我们会根据 ...