Open goldEli opened 4 years ago
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS实现冒泡排序算法</title>
</head>
<body>
<script>
/**
* 两步实现冒泡排序:
* 1.循环从第一位元素开始遍历;
* 2.相邻元素两两比较
*/
var data = [2,6,3,8,5,9,7];
console.log("排序前的data数组:" + data);
bubble(data);
console.log("排序后的data数组:" + data);
// 冒泡排序算法
function bubble(array,boolean){
var j = array.length - 1;
for (var m = 0; m < array.length; m++) {
for (var i = 0; i < j; i++) {
if (array[i] > array[i + 1]) {
swarp(i, i + 1, array);
}
}
j--;
}
}
// 元素替换位置
function swarp(m, n, array){
var tmp = array[m];
array[m] = array[n];
array[n] = tmp;
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS实现冒泡排序算法</title>
</head>
<body>
<script>
/**
* 三步实现冒泡排序:
* 1.循环从第一位元素开始遍历;
* 2.相邻元素两两比较;
* 3.设立哨兵
*/
var data = [2,6,3,8,5,9,7,1,10,3,6,11];
console.log("排序前的data数组:" + data);
bubble(data);
console.log("排序后的data数组:" + data);
var count = 0;
// 冒泡排序算法
function bubble(array,boolean){
var pos = 0;
var temp = array.length - 1;
for (var m = 0; m < array.length-1; m++) {
var flag = 0;
for (var i = 0; i < temp; i++) {
if (array[i] > array[i + 1]) {
swarp(i, i + 1, array);
flag = 1;
pos = i;
}
console.log(count);
}
temp = pos;
if(flag == 0){
return;
}
}
}
// 元素替换位置
function swarp(m, n, array){
var tmp = array[m];
array[m] = array[n];
array[n] = tmp;
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>冒泡</title>
</head>
<body>
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
</body>
<script>
var tmp = 0;
var bubbleSort = function(nums) {
for(var i = 0;i < nums.length;i++){
for(var n = 0;n < nums.length;n++){
if(nums[i] < nums[n]){
tmp = nums[i];
nums[i] = nums[n];
nums[n] = tmp;
}
}
}
console.log("hello");
};
bubbleSort([2,4,3,1,1,5])// [1, 2, 3, 4, 5]
</script>
</html>
<script>
/*
* @param {number[]} nums
* @return {number[]}
*/
var bubbleSort = function(nums) {
for(var i = 0 ; i < nums.length-1 ; i++ ){
for(var j = 0 ; j < nums.length-i-1 ; j++){
if(nums[j] > nums[j+1]){
var temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] =temp;
}
}
}
console.log(nums);
};
bubbleSort([2,4,3,1,5])// [1, 2, 3, 4, 5]
bubbleSort([2,4,3,1,1,5])// [1, 2, 3, 4, 5]
</script>
<body>
<!--
实现思路:二路排序算法
1):取第一个元素,依次和后面的元素进行比较;
2):以升序为例,从左侧检测到小于标志位的元素,更换位置;
3):之后,然后从右侧检测到小于标志位的元素,更换位置;
-->
<script>
const data = [3,6,5,9,2,4,8,1,12,7,15];
console.log("排序前=", data);
quickSort(data);
console.log("排序后=", data);
// 快速排序
function quickSort(array){
if (array.length <= 1) {
return array;
}
quickSort2(array, 0, array.length-1);
}
// 递归(以升序为例)
function quickSort2(array, left, right){
if(left < right){
// 将基准值存入临时变量
const flag = array[left];
// 将数组的边界值存入变量,i和j中
var i = left;
var j = right;
while(i < j){
while(i<j && array[j]>flag){
j--;
}
array[i] = array[j];
while(i<j && array[i]<flag){
i++;
}
array[j] = array[i];
}
array[i] = flag;
quickSort2(array, left, i-1);
quickSort2(array, i+1, right);
}
}
</script>
</body>