- 冒泡排序(双for,左比右)
冒泡排序是比较任何两个相邻的项。如果第一个比第二个打,则交换他们。元素项向上移动至正确顺序,就好像气泡升至表面一样,因此得名
let arr = [1, 66, 95, 25, 18, 8, 41, 88, 4, 37, 6, 72];
function arrsort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
let first = arr[j];
let last = arr[j + 1];
let value = 0;
if (first > last) {
value = first;
arr[j] = arr[j + 1];
arr[j + 1] = value;
}
}
}
return arr
}
window.alert(arrsort(arr))
//创建一个数组来表示待排序和搜索的数据结构
function ArrayList() {
var arr = [];
this.insert = function (item) {//创建一个插入方法向数据结构中添加元素,生成一个新的数组
arr.push(item)
}
this.toString = function () {//将数组中的元素拼接成一个字符串
return arr.join()
}
this.bubbleSort = function bubbleSort() {//创建一个冒泡排序的函数
var length = arr.length;
for (let i = 0; i < length; i++) {//从数组的最后一位迭代至最后一位,决定数组中进行了多少轮排序,轮数和数组长度一致
for (let j = 0; j < length - 1; j++) {//从第一位迭代至倒数第二位,进行的是当前项和下一项的比较
if (arr[j] > arr[j + 1]) {//比较两项的大小
swap(arr, j, j + 1)//调用一个函数,顺序如果不对就交互他们的位置
}
}
}
}
//冒泡排序改进,减去循环中已跑过的轮数
this.modifiedBubbleSort = function(){
var length = arr.length;
for(let i = 0 ;i<length;i++){
for(let j = 0 ;j<length-1-i;j++){
if(arr[j]>arr[j+1]){
swap(arr,j,j+1)
}
}
}
}
}
var swap = function (arr, index1, index2) {
var aux = arr[index1];
arr[index1] = arr[index2];
arr[index2] = aux;
}
function creatNonSortedArray(size) {
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i)
}
return arr
}
var arr = creatNonSortedArray(8);
console.log(arr.toString())
arr.modifiedBubbleSort()
console.log(arr.toString())
2.快速排序
网友评论