ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript Switc希尔排序

2021-11-04 22:02:40  阅读:135  来源: 互联网

标签:arr console log JavaScript gap Switc 增量 序列 排序


算法详解

希尔排序的基本思想:

(1)选择一个希尔增量序列t1,t2,…,tk,(递减序列,tk=1)

(2)按增量序列个数k,对序列进行k 趟排序,

每趟排序,根据对应的增量ti,将待排序列分割成若干子序列,分别对各子序列进行插入排序。

当且仅当增量为1 时,整个序列合成为一组,构成一组有序数字,完成排序。

说明:

(1)希尔增量的起始值不超过整个序列的长度,并且最好选择素数(由经验得出,学者可以尝试一下)。

(2)希尔增量序列是递减的,递减规律自行确定,但一定要保证最后一个希尔增量值为1。

代码:

    <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>

这是我所学到的,所以我要分享给你们,希望可以帮助到你们。

以上就是我的分享,新手上道,请多多指教大神勿喷

标签:arr,console,log,JavaScript,gap,Switc,增量,序列,排序
来源: https://blog.csdn.net/lysliuyue/article/details/121152469

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有