Java教程

JavaScript Switc希尔排序

本文主要是介绍JavaScript 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>

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

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

这篇关于JavaScript Switc希尔排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!