文章目录
搜索学习进行中……
排序
比较排序法:
冒泡排序
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
1.查找列表内最后两位,比较大小,按照小—>大顺序排列:
举例:25680931
25680931 —> 25680913
2.然后前进一位,继续查找:
25680913 —> 25680193
3.重复性对比每个位置的排序,最后最小的会被移动到最前端,也就是最左端,变成这样:
25680913 —> 25680193
25680193 —> 25680193
25680193 —> 25608193
25608193 —> 25068193
25068193 —> 20568193
20568193 —> 02568193
25680931 —> 02568193
4.再次从末尾进行同样排序操作,这次最小的1排到了第二位:
02568193 —> 01256839
5.重复动作,直到达到排序目的:
25680931 —> 01235689
JS测试(用JS比较方便,可以直接试验):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>冒泡</title>
<script>
bubbleSort(arr){
var i = arr.length,j;
var temp;
while(i > 0){
for(j=0;j<i-1;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
i--;
}
return arr;
}
function bubbleSorto(){
var arr = [9,1,3,0,5,2,4,6,8,7];
var arrSort = bubbleSort(arr);
alert(arrSort);
}
</script>
</head>
<body>
<button onclick="bubbleSorto();" value="clock me">click me</button>
</body>
</html>
选择排序
*通过线性搜索数列,找到最小值或最大值放到第一位,然后再依次寻找最小值或者最大值放到第二位。重复操作直到排序完成
插入排序
*思想:拿右侧的依次类比左侧大小,然后进行调换排序;
*假设第一位固定,然后取第二位与第一位相比,如果第一位数字较大,则交换两者位置。
*再取第三位与左侧第二位相比,比较大小,如果需要较小就交换位置。再比较左侧第一位,如果仍然小于第一位,则与第一位交换位置。
依次拿后一位与前一位进行对比,交换,直到达到排序目的
堆排序
*利用堆的数据结构,按照降序构建堆
比如数组[9,8,5,3,2,1,4]存到堆里就是这样:
然后再从大到小取出,然后按照相反的顺序排列,达到排序的目的
一般堆里面的排列是这样的:
A B C D E F G