其实我基础很差,最近无聊同时发现教别人的时候自己才会懂很多东西,给大家分析下面试经常遇到的插入排序。别只会用,要理解才行,随便写的,看不明白的联系我。老鸟飘过(JAVA代码,直接复制可用)
package com.chris;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 插入排序
* @author chris
*
*/
public class InsertSort {
List<Integer> al;
/**
* 构造方法,生成随机数组
*
* @param num
* @param mod
*/
public InsertSort(int num, int mod) {
al = new ArrayList<Integer>(num);
Random rand = new Random();
System.out.println("排序前的数据:");
for (int i = 0; i < num; i++) {
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al[" + i + "]=" + al.get(i));
}
}
/**
* 进行排序(由小到大)
*/
public void SortIt() {
int tempInt;
int MaxSize = 1;//待比较数据的索引,从第一个开始
System.out.println("\n\n【观察以下部分每行数据与排序前每个数据的位置】");
for (int i = 1; i < al.size(); i++) {
tempInt = (int) al.remove(i);//移除当前位置的数据,并将这个数据存放到tempInt中
if (tempInt >= ((int) al.get(MaxSize - 1))) {
al.add(MaxSize, tempInt);//如果移除的这个数据比前一个大,就把这个数据放回原位,不做处理
MaxSize++;//索引+1
System.out.println("当前list中的数据:" + al.toString());
//2,7,5
} else {
/**
* 下面的操作就是把这个数据插入当前索引之前第一个比它大的数据的索引的位置<br />
* 如果看不懂,就运行看效果就明白了br/>
*
*/
for (int j = 0; j < MaxSize; j++) {
if ((int) al.get(j) >= tempInt) {
al.add(j, tempInt);
MaxSize++;//索引+1
System.out.println("当前list中的数据:" + al.toString());
break;
}
}
}
}
System.out.println("【观察以上部分每行数据与排序前每个数据的位置】\n\n");
System.out.println("排序后的数据:");
for (int i = 0; i < al.size(); i++) {
System.out.println("al[" + i + "]=" + al.get(i));
}
}
public static void main(String[] args) {
InsertSort is = new InsertSort(10, 100);
is.SortIt();
}
}
分享到:
相关推荐
### 插入排序Java代码详解 #### 一、插入排序简介 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,...
本文将深入探讨两种常见的排序算法:插入排序和合并排序,并基于一个长度为200000的数组进行性能比较。 **插入排序**是一种简单直观的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从...
在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...
在Java中实现插入排序,我们可以按照以下步骤进行: 1. **基本思想**:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。可以想象成每次从无序序列中取出一个元素,找到它在有序序列中...
下面我们将详细探讨Java实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...
### Java插入排序程序详解 #### 一、程序概述 本文将详细介绍一个Java实现的插入排序算法。插入排序是一种简单直观的排序方法,其工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到...
在本文中,我们将深入探讨Java编程中的三种基本排序算法:冒泡排序、插入排序和堆排序。这些排序算法是计算机科学中的基础知识,尤其对于初学者来说,理解和实现它们至关重要。我们将详细讲解每种排序算法的工作原理...
JAVA实现插入排序,简单演示
4. **效率分析**:直接插入排序在处理小规模数据或者部分有序的数据时,效率相对较高。然而,对于大规模或无序的数据,由于其时间复杂度较高,性能会显著下降。因此,实际应用中,更常用于辅助其他高级排序算法,如...
本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...
快速排序和插入排序是两种广泛使用的排序算法,它们在计算机科学和编程中有着重要的地位,尤其是在数据处理和算法分析方面。下面将详细讲解这两种排序算法的原理、Java实现及其特点。 **快速排序** 快速排序是一种...
总结一下,Java插入排序是通过创建一个`InsertionSort`类,定义一个`sort`方法,对给定的一维整型数组进行逐个元素的比较和移动,从而达到排序的目的。这种方法直观易懂,但效率较低,适合于小规模或基本有序的数据...
以下将详细讲解标题和描述中提到的五种排序算法:选择排序、插入排序、自顶向上合并排序、合并排序以及快速排序。 1. **选择排序(Selection Sort)** 选择排序是一种简单直观的排序算法,它的工作原理是每一次从待...
以下是一个简单的Java插入排序算法实现: ```java public class InsertionSort { public static void insertionSort(int[] array) { for (int i = 1; i ; i++) { int key = array[i]; int j = i - 1; // 将比...
本文将详细讲解插入排序的概念、原理,并提供一个Java语言的实现示例。 插入排序是一种基本的排序算法,它的工作原理类似于我们平时整理扑克牌的过程。想象一下,你有一堆未排序的牌,每次取出一张牌,将其插入到已...
本篇文章将详细讲解快速排序、冒泡排序和插入排序这三种常用的排序算法,并通过Java代码示例进行演示。 **快速排序** 快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare于1960年提出。其基本思想是...
### Java编写的插入排序算法 #### 一、插入排序算法基本思想 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在...
用java实现插入排序InsertSort 用java实现插入排序InsertSort用 java实现插入排序InsertSort
直接插入排序 java实现~你值得拥有~