排序算法的实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//创建列表类
function ArrayList(){
//属性
// (要排序的元素 都是存放在一个数组中的)
this.array = []
// 方法
// 将数据可以插入到数组中的方法
ArrayList.prototype.insert = (item) => {
this.array.push(item)
}
// toString
ArrayList.prototype.toString = () => {
return this.array.join('-')
}
//交换两个位置的数据
ArrayList.prototype.swap = (m,n) => {
let temp = this.array[m]
this.array[m] = this.array[n]
this.array[n] = temp
}
// 实现排序算法
// 冒泡排序
ArrayList.prototype.bubblesort = () => {
// 1.获取数组的长度
let length = this.array.length
for(let j = length - 1;j >= 0;j--){
//第一次进来: i = 0,比较 0 和 1 位置的两个数据,如果0位置大于1位置的数据
//最后一次进来: i=length-2,比较 length-2 和 length-1 两个数据的值
for(let i = 0;i < j;i++){
if(this.array[i] > this.array[i+1]){
// 交换两个数据:也可以使用数组的解构赋值
this.swap(i,i+1)
}
}
}
}
// 选择排序
ArrayList.prototype.selectionSort = () => {
//1.获取数组的长度
let length = this.array.length
//2.外层循环:从0位置开始取数据
for(let j = 0;j < length - 1;j++){
//内层循环:从 i+1 位置开始,和后面的数据进行比较
let min = j
for(let i = j + 1;i < length;i++){
if(this.array[min] > this.array[i]){
min = i
}
}
this.swap(min,j)
}
}
// 插入排序
// 希尔排序
// 快速排序
}
// 测试类
let list = new ArrayList()
// 插入元素
list.insert(66)
list.insert(555)
list.insert(20)
list.insert(13)
list.insert(88)
// console.log(list)
//验证冒泡排序
// list.bubblesort()
// console.log(list.toString())
//验证选择排序
list.selectionSort()
console.log(list.toString())
</script>
</body>
</html>