排序算法学习原文链接:链接描述
gif动图描述:
冒泡排序:链接描述
选择排序:链接描述
插入排序:链接描述
根据动图,我写出的代码(没有按照那个网址上的来,而是通过观察动图,得出的代码,正确性未知。不过结果是正确的):
// 冒泡排序
function bubbleSort(arr , sortType){
var sortTypeRange = ['asc' , 'desc'];
var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
// 作为中间值,进行交换
var cur = null;
for (var i = 0; i < arr.length; ++i)
{
for (var n = 0; n < arr.length; ++n)
{
if (sortType === 'asc' ? arr[n] > arr[n + 1] : arr[n] < arr[n + 1]) {
cur = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = cur;
}
}
}
return arr;
}
// 选择排序
function selectionSort(arr , sortType){
var sortTypeRange = ['asc' , 'desc'];
var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
// 作为中间值,进行交换
var cur = null;
for (var i = 0; i < arr.length; ++i)
{
cur = arr[i];
for (var n = i + 1; n < arr.length; ++n)
{
if (sortType === 'asc' ? cur > arr[n] : cur < arr[n]) {
arr[i] = arr[n];
arr[n] = cur;
cur = arr[i];
}
}
}
return arr;
}
// 插入排序
function insertSort(arr , sortType){
var sortTypeRange = ['asc' , 'desc'];
var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
var cur = null;
for (var i = 0; i < arr.length; ++i)
{
// 用来持续比较的值
cur = arr[i];
for (var n = Math.max(0 , i - 1) ; n >= 0; --n)
{
// 自身对比时,跳出
if (n === i) {
break;
}
if (sortType === 'asc' ? cur < arr[n] : cur > arr[n]) {
arr[n + 1] = arr[n];
arr[n] = cur;
} else {
break;
}
}
}
return arr;
}
三种算法运行结果,随机数:10000 个,升序排序:

得出的结果是正确的,感觉自己写的也对。但毕竟是自己觉得,所以想要精通的算法的人看下,上面的代码是否正确??即 标注的名称:冒泡排序 和实际的代码:冒泡排序代码 是否对应?不会说标注了冒泡排序 ,然后冒泡排序代码 却 用的不是冒泡排序的算法,那就不好了....
麻烦大神看下...,谢谢
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
认证0级讲师