栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

插入排序问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

插入排序问题

package com.www.demo10;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Insert {
    public static void main(String[] args) {
        int[] arr = new int[80000];
        for (int i = 0;i < arr.length;i++){
            arr[i] = (int)(Math.random()*1000);
        }

//        show(arr);
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(date);
        System.out.println("排序前" + format);
//        insertLinked(arr);//10s
//        insertSort(arr);//2s
        insertSort1(arr);//1s
        System.out.println();
        Date date1 = new Date();
        String format1 = simpleDateFormat.format(date1);
        System.out.println("排序前" + format1);
//        show(arr);
    }

    //方法一:待插入数据从前向后比较,找出要插入位置,然后将该位置数后移一位,腾出位置放待插入数据
    public static void insertSort(int[] arr){
        for (int i = 1;i < arr.length;i++){
            int temp = arr[i];//待插入数据
            for (int j = 0;j < i;j++){//与前面数据比较
                if (arr[i] < arr[j]){
                    for (int k = i;k > j;k--){//第j位置是要插入位置
                        arr[k] = arr[k-1];//后面数向后平移一位
                    }
                    arr[j] = temp;
                }
            }
        }
    }

    //方法二:将待插入数据从后向前比较,比较一次,满足条件就后移一位,继续比较,直到找到待插入位置,插入待插入数据,此方法,比较和移动是同时进行的
    public static void insertSort1(int[] arr){
        for (int i = 1;i < arr.length;i++){
            int temp = arr[i];//待插入数据
            int j = i - 1;
            for (;j >= 0 && (temp < arr[j]);j--){//与前面数据比较
                    arr[j + 1] = arr[j];
            }

            arr[j + 1] = temp;
        }
    }

    //方法三:链表
    public static void insertLinked(int[] arr){
        int size = arr.length;
        Linkedlist node = new Linkedlist(-1);//头结点
        for (int i = 0;i < size;i++){
            Linkedlist temp = node;
            while (true){
                Linkedlist temp1 = new Linkedlist(arr[i]);
                if (temp.next == null){
                        temp.next = temp1;
                        break;
                }
                if (temp1.a < temp.next.a){
                        temp1.next = temp.next;
                        temp.next = temp1;
                        break;
                }
                temp = temp.next;
            }
        }
        Linkedlist temp2 = node.next;
        for (int i = 0;i < size;i++){
            arr[i] = temp2.a;
            temp2 = temp2.next;
        }
    }
    public static void show(int[] arr){
        for (int i = 0;i < arr.length;i++){
            System.out.print(arr[i] + " ");
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号