冒泡排序
规则:前后两个数两两进行比较,如果符合交换条件就交换两个数位置。
规律:冒泡排序每一轮排序,都可以找出一个较大的数,放在正确的位置。
分析:
比较轮数=数组长度-1;
每一轮比较的次数=数组长度-当前的轮数。
实践
这一块我用函数把它封装起来了 方便以后使用
tool.js
function bubbleSort(arr) {
for (var i=0;i<arr.length-1;i++){
for (var j=0;j<arr.length-(i+1);j++){
if (arr[j]>arr[j+1]){
//交换两个数的位置
var tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>冒泡排序</title>
<script src="tool.js"></script>
<script>
var arr=[7,9,6,5,3,1];
document.write(arr+"<br/>");
bubbleSort(arr);
document.write(arr)
</script>
</head>
<body>
</body>
</html>
效果图
选择排序
选择排序(打擂台法)
规则:选出一个位置,这个位置上的数,和后面所有的数进行比较,如果比较出大小就交换两个数位置。
比较的轮数=数组长度-1;
每一轮比较的次数=数组长度-当前的轮数
实践:
这一块我用函数把它封装起来了 方便以后使用
tool.js
function bubbleSortAsc(arr) {//升序
for (var i=0;i<arr.length-1;i++){
for (var j=0;j<arr.length-(i+1);j++){
if (arr[j]>arr[j+1]){
//交换两个数的位置
var tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
function bubbleSortDesc(arr) {//升序
for (var i=0;i<arr.length-1;i++){
for (var j=0;j<arr.length-(i+1);j++){
if (arr[j]<arr[j+1]){
//交换两个数的位置
var tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
function changeSortASC(arr) {//升序
for (var i=0;i<arr.length-1;i++){
//被比较的数的下标
for (var j=i+1;j<arr.length;j++){
if (arr[i]>arr[j]){
var tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
}
function changeSortDesc(arr) {//降序
for (var i=0;i<arr.length-1;i++){
//被比较的数的下标
for (var j=i+1;j<arr.length;j++){
if (arr[i]<arr[j]){
var tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>冒泡排序</title>
<script src="tool.js"></script>
<script>
var arr = [7, 9, 6, 5, 3, 1];
document.write(arr + "<br/>");
bubbleSortAsc(arr);
document.write(arr + "<br/>");
bubbleSortDesc(arr);
document.write(arr + "<br/>");
changeSortASC(arr);
document.write(arr + "<br/>");
changeSortDesc(arr);
document.write(arr + "<br/>");
</script>
</head>
<body>
</body>
</html>