zoukankan      html  css  js  c++  java
  • 用 Java 实现一个插入排序算法

            有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法:插入排序法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据搜索,算法适用于少量数据的排序。时间复杂度为 O(n^2),是一种稳定的排序算法。

           插入排序算法把要排序的数组分成两部分:第一部分包含了这个数组除了最后一位的所有元素,而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序后,再将最后这个元素插入到第一部分中的正确位置。

          说明:这里的最后一位,也可以是最前的一位。

           在编程实现中,一般用二重循环实现,外循环变量设为 i,内循环变量设为 j 。把数组的前面一段排好序,然后把 j 依次减少,直到找到适合数组在 i 的数据,然后插入该数据,并把之后的数字往后移。

    以下是该题目的代码实现:

      1 package com.fhcq.insertsort;
      2 
      3 public class InsertSort {
      4 
      5 	//主方法
      6 	public static void main(String[] args) {
      7 		// TODO Auto-generated method stub
      8 
      9 		int[] arr = { 3, 5, 4, 1, 8, 11, 9 }; //定义数组
     10 		doInsertSort(arr); //开始排序
     11 	}
     12 
     13 	//排序方法
     14 	private static void doInsertSort(int[] src) {
     15 		// TODO Auto-generated method stub
     16 		int len = src.length; //获取数组长度
     17 		for (int i = 1; i < len; i++) { //遍历数组,从1开始
     18 			int j; //定义变量 j
     19 			int temp = src[i]; //临时存储当前的数字
     20 			for (j = i; j > 0; j--) { //遍历 i 之前的数字
     21 				//如果前面的数字大于后面的,则把大的值赋到后边
     22 				if(src[j-1]>temp){
     23 					src[j] = src[j-1];
     24 				}else{
     25 					//如果当前的数,不小于前面的数,那就说明不小于前面所有的数
     26 					//因为前面已经是排好了序的,所以直接返回当前一轮的比较
     27 					break;
     28 				}
     29 			}
     30 			src[j] = temp; //把空缺位置的数字赋值为原来的值
     31 		}
     32 		print(src); //打印	
     33 	}
     34 
     35 	//打印方法
     36 	private static void print(int[] before) {
     37 		// TODO Auto-generated method stub
     38 		for (int i = 0; i < before.length; i++) { //遍历
     39 			System.out.print(before[i]+""); //打印,以空格隔开
     40 		}
     41 		System.out.println(); //换行
     42 	}
     43 
     44 }
     45 
  • 相关阅读:
    C# Xamarin For Android自动升级项目实战
    C# Xamarin移动开发基础进修篇
    .NET轻量级ORM框架Dapper入门精通
    ASP.NET WebApi技术从入门到实战演练
    (简单、可靠的安装方法)在Windows Server2016中安装SQL Server2016
    ASP.NET (Core) WebAPI IIS PUT和DELETE请求失败 405的解决办法
    js中判断对象是否为空的三种实现方法
    windows10如何设置只显示时间不显示日期
    NuGet微软官方中国国内镜像
    Win10找不到hosts文件解决方法
  • 原文地址:https://www.cnblogs.com/justlove/p/6985109.html
Copyright © 2011-2022 走看看