码迷,mamicode.com
首页 > 编程语言 > 详细

js:数据结构笔记11--排序算法(1)

时间:2014-10-19 18:23:09      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   ar   java   for   strong   sp   

基本准备:

  function  CArray(numElems) {
  	this.dataStore = [];
  	this.pos = 0;
  	this.numElems = numElems;
  	this.insert = insert;
  	this.toString = toString;
  	this.clear = clear;
  	this.setData = setData;
  	this.swap =swap;
  	for(var i = 0; i < numElems; ++i) {
  		this.dataStore[i] = i;
  	}
  }
  function  setData() {
  	for(var i = 0; i < this.numElems; ++i) {
  		this.dataStore[i] = Math.floor(Math.random() * 100);//0-99
  	}
  }
  function clear() {
  	for (var i = 0; i <  this.numElems; ++i) {
  		this.dataStore[i] = 0;
  	}
  }
  function insert(elem) {
  	this.dataStore[this.pos++] = elem;
  }
  function toString() {
  	var str = "";
  	for(var i = 0; i < this.dataStore.length; ++i) {
  		str += this.dataStore[i] + " ";
  		if( i > 0 && (i+1) %10 === 0) {
  			str += "\n";
  		}
  	}
  	return str;
  }
  function swap(arr,index1,index2) {
  	var temp = arr[index1];
  	arr[index1] = arr[index2];
  	arr[index2] = temp;
  }

 基本排序算法:

  • 冒泡排序:最容易实现也是最慢的算法之一
    • 从头开始依次分别比较相邻的两个元素并排序,直到最后一个;此时确定最后一个会是最大的;
    • 重复上面步骤但不比较已经确定的,此时确定最后第二个是第二大的;
    • 继续重复直到剩下第一个元素为止,确定它是最小的;

    效果:

bubuko.com,布布扣

  function bubbleSort() {
    var numElems = this.dataStore.length;
    var temp;
    for(var outer = numElems; outer > 1 ; --outer) {
      for(var inner = 0; inner < outer; ++inner) {
        if(this.dataStore[inner] > this.dataStore[inner + 1]) {
          swap(this.dataStore,inner,inner + 1);
        }
      }
    }
  }

 demo:

  • 选择排序:

 

js:数据结构笔记11--排序算法(1)

标签:blog   http   io   os   ar   java   for   strong   sp   

原文地址:http://www.cnblogs.com/jinkspeng/p/4035146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!