用JavaScript实现希尔排序
一、希尔排序是什么?
希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。
二、用JavaScipt实现
<!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> </body> <script type="text/javascript"> var arr = [9, 1, 2, 5, 7, 4, 8, 6, 3, 5]; //初始化数组 var half = parseInt(arr.length / 2); //设置增量为原数组长度的一半 //控制增量 for (var gap = half; gap >= 1; gap = parseInt(gap / 2)) { console.log(--------gap + gap); //检查增量gap的值 //循环整个数组 for (var i = gap; i < arr.length; i++) { // console.log(arr[i]);//检验循环遍历的次数 //循环每个小组内的数字 for (var j = i - gap; j >= 0; j = j - gap) { // console.log(j, j - gap); console.log(j, arr[j], arr[j + gap]); //索引,用来比较的两个值 //比较大小,交换位置 if (arr[j] > arr[j + gap]) { var temp = arr[j]; arr[j] = arr[j + gap]; arr[j + gap] = temp; } } console.log(+++++++++++) } } console.log(arr); </script> </html>