在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排序 查找算法大全的更多相关文章

  1. 深入JDK源码之Arrays类中的排序查找算法(转)

    原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...

  2. C/C++ 排序&&查找算法(面试)

    一.排序 1.冒泡排序 void BubbleSort(int array[],int n) { ; ; ; ; ;i<n - ;i++) /*外循环控制排序的总趟数*/ { flag = ; ...

  3. Java常用的排序查找算法

    public static void main(String[] args) {      // bubbleSort(); // int[] a = {20,2,10,8,12,17,4,25,11 ...

  4. Java数据结构 遍历 排序 查找 算法实现

    请查看:http://blog.csdn.net/zhanghao_hulk/article/details/35372571#t13

  5. Web高级 JavaScript中的算法

    算法 排序算法 稳定排序 待排序序列中相等元素在排序完成后,原有先后顺序不变. 非稳定排序 有序度 待排序序列中有序关系的元素对个数. 逆序度 1. 插入排序 遍历有序数组,对比待插入的元素大小,找到 ...

  6. javascript数据结构与算法--高级排序算法

    javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...

  7. javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较

    javascript数据结构与算法--基本排序算法(冒泡.选择.排序)及效率比较 一.数组测试平台. javascript数据结构与算法--基本排序(封装基本数组的操作),封装常规数组操作的函数,比如 ...

  8. C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题

    C#字符串数组排序   //排序只带字符的数组,不带数字的 private   string[]   aa   ={ "a ", "c ", "b & ...

  9. JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)

    1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...

随机推荐

  1. 【转】Oracle job procedure 存储过程定时任务

    原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...

  2. Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...

  3. handoff了解

    iOS8推出一个新特性,叫做Handoff.Handoff中文含义为换手(把接力棒传给下一个人),可以在一台Mac和iOS设备上开始工作,中途将工作交换到另一个Mac或iOS设备中进行.这个在iOS8 ...

  4. Clang 与 LLVM

    我们在iOS调试中经常会看到Clang这个,那么Clang到底是什么呢?我们来简单了解一下. Clang是一个C.C++.OC语言的轻量级编译器.源代码发布于BSD协议下.Clang是由C++编写,基 ...

  5. iOS开发 - NSBundle, NSDevice, NSLocale

    iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取到 ...

  6. IE8下String的Trim()方法失效的解决方法

    String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.

  7. Unreal Engine4 蓝图讲解

    UE4开发群:344602753 Unread Engine4的界面概况: UE4的效果可以说是比较好的,从整体架构上来说,和Unity3d的逻辑架构不太 一样,发现UE4不好上手,但是从理论上考虑, ...

  8. 因为中国队赢了,再撸一下DJANGO的官方文档吧

    对比一下,CBVS和FBVS,哪个方便? from django.shortcuts import render from django.http import Http404 from django ...

  9. Android 使用XmlPullParser解析xml

    这里我们假设要解析的xml文件名为:test.xml,我们将其放在assets路径中. xml文件内容为: <?xml version='1.0' encoding='utf-8' standa ...

  10. 最简单的CRC32源码-查表法

    这个算法是在逐BYTE法的基础上进行修改的,在上一篇文章里我们说过,如果不查表的话,逐BYTE法和逐BIT法没什么区别,现在我们就把这个算法写出来,注意在调用CRC校验函数前需要先调用表生成函数: u ...