内容简介:冒泡排序是最慢的排序算法之一,数据值会像起跑一样从数组的一端漂浮到另一端从数组的开头开始,将第一个元素和其他元素相比,最小的元素放在第一个位置,再从第二个位置开始
冒泡排序
冒泡排序是最慢的 排序 算法之一,数据值会像起跑一样从数组的一端漂浮到另一端
动画演示
js实现
var CArray = function () {
this.dataStore = [9,5,6,8,2,7,3,4,1] //定义数组
this.swap = swap; //数值交换位置
this.bubbleSort = bubbleSort //冒泡排序
}
function swap(arr, index1, index2) {
var temp = arr[index1]
arr[index1] = arr[index2]
arr[index2] = temp
}
function bubbleSort() {
var data = this.dataStore
var numlength = data.length
for(var outer = numlength; outer>=2; --outer) {
for(var inner = 0; inner<=outer -1;inner ++) {
if(data[inner] > data[inner + 1]){
this.swap(this.dataStore, inner, inner+1)
}
}
}
}
var aa= new CArray()
aa.bubbleSort()
console.log(aa.dataStore)复制代码
选择排序
从数组的开头开始,将第一个元素和其他元素相比,最小的元素放在第一个位置,再从第二个位置开始
动画演示
js实现
var CArray = function () {
this.dataStore = [9,5,6,8,2,7,3,4,1] //定义数组
this.swap = swap; //数值交换位置
this.selectSort = selectSort //选择排序
}
function swap(arr, index1, index2) {
var temp = arr[index1]
arr[index1] = arr[index2]
arr[index2] = temp
}
function selectSort() {
var min
for(var outer = 0; outer < this.dataStore.length -2; ++outer) {
min = outer
for(var inner = outer +1; inner <= this.dataStore.length -1; ++inner) {
if(this.dataStore[inner] < this.dataStore[min]){
min = inner
}
}
this.swap(this.dataStore, outer, min)
}
}
var aa= new CArray()
aa.selectSort()
console.log(aa.dataStore)复制代码
插入排序
类似人们按数字或字母顺序对数据进行排序,后面的要为前面的腾位置
动画演示
js实现
var CArray = function () {
this.dataStore = [9,5,6,8,2,7,3,4,1] //定义数组
this.insertSort = insertSort //插入排序
}
function insertSort() {
var temp, inner
for(var outer = 1; outer < this.dataStore.length; ++outer) {
temp = this.dataStore[outer]
inner = outer
while(inner>0 && (this.dataStore[inner -1]) >= temp){
this.dataStore[inner] = this.dataStore[inner -1]
// console.log('inner->',this.dataStore)
inner --
}
this.dataStore[inner] = temp
// console.log('outer->',this.dataStore)
}
}
var aa= new CArray()
aa.insertSort()
console.log(aa.dataStore)复制代码
希尔排序
它会首先比较较远的元素而非相邻的元素,让元素尽快回到正确的位置。
通过定义一个间隔序列来表示在排序过程中进行的元素间隔。
公开的间隔序列是701,301,132,57,23,10,4,1
动画演示
js实现
var CArray = function () {
this.dataStore = [99,5,6,8,2,7,3,4,1,23,12,67,43,89] //定义数组
this.shellSort = shellSort //希尔排序
this.gaps = [5,3,1] //希尔间隔
this.dynamiSort = dynamiSort //动态的希尔排序
this.swap = swap; //数值交换位置
}
function shellSort() {
for(var g = 0; g < this.gaps.length; ++g) {
for(var i = this.gaps[g]; i < this.dataStore.length; ++i) {
var temp = this.dataStore[i]
for(var j = i; j>=this.gaps[g] && this.dataStore[j - this.gaps[g]] > temp; j-=this.gaps[g]) {
this.dataStore[j] = this.dataStore[j - this.gaps[g]]
}
this.dataStore[j] = temp
}
console.log('调换后-》', this.dataStore)
}
}
//动态的希尔排序
function dynamiSort() {
var N = this.dataStore.length
var h = 1
while(h < N/3) {
h = h*3+1
}
while(h>=1) {
for(var i = h; i < N; ++i) {
for(var j = i; j>=h && this.dataStore[j] < this.dataStore[j - h] ; j-=h) {
console.log(j)
this.swap(this.dataStore, j, j-h)
}
}
console.log('调整后-》',this.dataStore)
h = (h-1) / 3
}
}
function swap(arr, index1, index2) {
var temp = arr[index1]
arr[index1] = arr[index2]
arr[index2] = temp
}
var aa= new CArray()
// aa.shellSort()
aa.dynamiSort()
console.log(aa.dataStore)复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
锦绣蓝图
[美] 沃德科 (Christina Wodtke)、[美] 戈夫拉 (Austin Govella) / 蔡芳 / 人民邮电出版社 / 2009-11-01 / 59.00
Web 2.0和社会化大趋势下,你的网站发展喜人,但是问题也接踵而来:信息变得越来越庞杂无序,业务流程愈加复杂,搜索和导航越来越难,用户对使用体验的要求也越来越高……怎么办? 作者非常通俗易懂地讲述了如何规划易用的网站及其背后的信息架构原理。首先介绍了建立信息架构的八项基本原则,然后重点强调了组织系统和元数据在信息架构中的作用,并指出设计搜索和导航需要考虑的问题和方法,另外还补充了当今热门的......一起来看看 《锦绣蓝图》 这本书的介绍吧!