您身边的网站建设专家
成功案例

【建站服务】专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-泗阳上往建站-域名申请

日期: 2022-09-21 04:09:56 浏览数:5


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-泗阳上往建站

网站建设.png

    array[leftindex+1] = array[leftindex];                leftindex--;            }            array[leftindex+1] = temp;//把temp放到空位上        }    }        public static void main(String[] args){        int[] array = {38,65,97,76,13,27,49};        InsertSort is = new InsertSort(array);        System.out.println("排序前的数据为:");        is.display();        is.doInsertSort();        System.out.println("排序后的数据为:");        is.display();    }}

(5)插入排序分析:

时间复杂度,由于仍然需要两层循环,插入排序的时间复杂度仍然为O(n*n)。

  比较次数:在第一轮排序中,插入排序最多比较一次;在第二轮排序中插入排序最多比较二次;以此类推,最后一轮排序时,最多比较N-1次,因此插入排序的最多比较次数为1+2+...+N-1=N*(N-1)/2。尽管如此,实际上插入排序很少会真的比较这么多次,因为一旦发现左侧有比目标元素小的元素,比较就停止了,因此,插入排序平均比较次数为N*(N-1)/4。

移动次数:插入排序的移动次数与比较次数几乎一致,但移动的速度要比交换的速度快得多。

综上,插入排序的速度约比冒泡排序快一倍(比较次数少一倍),比选择排序还要快一些,对于基本有序的数据,插入排序的速度会很快,是简单排序中效率最高的排序算法。


快排、冒泡排序、选择排序、插入排序、归并排序

一、概述:

上文介绍了常见简单算法:冒泡排序、选择排序和插入排序。本文介绍高级排序算法:快速排序和归并排序。在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分、递归,并顺带介绍二分查找算法。

二、划分:

划分是快速排序的前提,即把数据分为两组,大于特定值的数据在一组,小于特定值的数据在另一组。快速排序即是由划分和递归操作来完成的。

(1)原理:

定义一个阈值,分别从最左面和最右面向中间遍历元素,左面找到一个大于阈值的数据便停止,右边找到一个小于阈值的数据便停止,如果此时左右两边都还没有走到中间,则交换左面大于阈值的数据和右面小于阈值的数据;重复上述过程,直到左面指针和右面指针相遇,此时左面数据均小于阈值,右面数据均大于阈值,划分结束。划分结束后,数据仍然是无序的,但更接近于有序。

(2)例子:

待划分数据:7, 6, 9, 8, 5,1,假设阈值为5


原理:


定义一个阈值,分别从最左面和最右面向中间遍历元素,左面找到一个大于阈值的数据便停止,右边找到一个小于阈值的数据便停止,如果此时左右两边都还没有走到中间,则交换左面大于阈值的数据和右面小于阈值的数据;重复上述过程,直到左面指针和右面指针相遇,此时左面数据均小于阈值,右面数据均大于阈值,划分结束。划分结束后,数据仍然是无序的,但更接近于有序。


(2)例子:


待划分数据:7, 6, 9, 8, 5,1,假设阈值为5


第一轮:左指针指向7,右指针指向1,左指针向后移,右指针向左移,发现左面第一个大于5的元素7,右面第一个小于5的元素1,交换7和1的位置,结果:1,6,9,8,5,7;


第二轮:从6开始找大于5的数字,找到6,右边从5起找小于5的数字,找到1,但此时由于6在1的右面,,即右指针<左指针,左右指针交叉,此时划分结束。原数列被划分为两部分,左侧子数列只有一个元素,即为1,其为小于阈值的子数列;右侧子数列包括5个元素,均为大于阈值5的元素。


(3)代码实现:


实例

package com.test.insertsort;

 

/**

 * 划分、递归、快排

 * @author bjh

 *

 */

public class QuickSort {

    

    /**待排序、划分数组*/

    private int[] array;

    /**数组长度*/

    private int length;

    

    public QuickSort(int[] array){

        this.array = array;

        this.length = array.length;

    }

    

    /**

     * 打印元素

     */

    public void printArray(){

        for(int i=0; i<length; i++){

            System.out.print(array[i]+" ");

        }

        System.out.println();

    }

    

    

    /**

     * 划分

     * @return 划分的分界点

     */



专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-泗阳上往建站


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站