插入算法
循环数组,以指针数据为基值 并且记录,,通过和左侧(右侧)的循环比较,当比较值大于(小于)基值时
将大的值至后,指针继续移动,比较,置换。直到遇到小于基值,或者到数组边界时截止,并且置换至首位。
结束一次内循环,这是外循环的指针左侧的是有序。
class Sort{
private long[] a;
private int nElement;
public Sort(long[] array){
this.a = array;
}
public static void main(String[] args) {
long[] array = new long[]{5,3,1,7,9,2,0};
Sort b = new Sort(array);
b.insertSort();
System.out.println(b);
}
public void insertSort(){
int out ,in;
int step = 0;
for(out = 0; out < a.length; out++){
long temp = a[out];//记录外层循环时当前的基值
in = out; //比较位置已外层循环指针的位置开始,指针左侧已有序。
while(in > 0 && a[in-1] > temp){
//当没有到数组边界 并且前一个值大于基值时 置换,并且将内循环指针前移,继续比较
//前一个值,直到条件不满足时跳出
a[in] = a[in-1];
--in;
step++;
}
// 将外层的基值至于排序中正确的位置
a[in] = temp;
}
System.out.println(step);
}
public String toString(){
StringBuilder b = new StringBuilder();
for(long l : a){
b.append(l);
b.append(",");
}
return b.toString();
}
}
例:
{5,3,1,7,9,2,0}
循环,3 < 5 将大值像后置换。并且指针前移
5,5,1,7,9,2,0,
已到数组边界,将基值至于当前内循环指针位置。
3,5,1,7,9,2,0,
3,5,5,7,9,2,0,
3,3,5,7,9,2,0,
1,3,5,7,9,2,0,
1,3,5,7,9,9,0,
1,3,5,7,7,9,0,
1,3,5,5,7,9,0,
1,3,3,5,7,9,0,
1,2,3,5,7,9,0,
分享到:
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
插入排序是最简单的排序算法之一,它的工作原理类似于手动整理扑克牌。遍历数组,将每个元素插入到已排序的部分,保持已排序部分的顺序。对于小规模或部分有序的数据,插入排序效率较高。其平均和最坏情况下的时间...
本项目涵盖了五种经典的排序算法:快速排序、堆排序、归并排序、插入排序和选择排序。接下来,我们将深入探讨这些算法的原理、实现及性能特点。 1. **快速排序**: 快速排序由C.A.R. Hoare在1960年提出,是一种采用...
下面将详细讲解这7种排序算法:快速排序、归并排序、插入排序、选择排序、冒泡排序、堆排序以及希尔排序。 1. **快速排序**:由C.A.R. Hoare提出的,采用分治策略。基本思想是选取一个基准元素,通过一趟排序将待...
在数据结构中,二叉排序树(Binary Search Tree,BST)是一种十分重要的数据结构,它不仅能够存储具有排序性质的数据集合,还能够高效地完成插入、查找、删除等操作。二叉排序树插入算法是维护二叉排序树性质的关键...
以下是关于"冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序"这七种常见排序算法的源码实现及相关知识点的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的...
本实验涉及了六种常见的排序算法:泡泡排序、直接插入排序、折半插入排序、希尔排序、直接选择排序,并且对每种排序算法进行了性能分析,包括统计执行时间、比较次数和交换次数。这些数据被保存在TXT文件中,便于...
本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...
在本文中,我们将深入探讨四种经典的排序算法:插入排序、选择排序、基数排序和冒泡排序,以及它们在C++语言中的实现。 **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理类似于我们...
有一个模板类写出了快速排序,冒泡排序,插入排序,选择排序四种算法。用的是C++哦
根据提供的文件信息,我们可以深入探讨几种经典的排序算法:冒泡排序、直接插入排序、快速排序以及希尔排序。这些算法在数据结构与算法课程中是非常重要的基础内容,它们各自有着独特的特性和应用场景。 ### 1. ...
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
本主题涵盖了六种经典的排序算法:希尔排序、堆排序、快速排序、简单选择排序、插入排序和冒泡排序。这些算法各有特点,适用于不同的场景,下面将逐一详细介绍。 1. **希尔排序**:希尔排序是由Donald Shell提出的...
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
常见的几种排序方式,包括选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序。vs2008实现,对话框方式,主要实现字符串的由小到大排序。点击“几种排序方法.vcproj“运行。字符集使用多字节集,不能用...
本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**冒泡排序**。冒泡排序是一种简单的交换排序方法,它通过不断比较相邻元素并交换...
本文将详细讨论三种基础的排序算法:选择排序、插入排序和冒泡排序。这些算法虽然简单,但在理解计算机如何执行排序操作方面起着至关重要的作用。 首先,我们来看**选择排序**(Selection Sort)。它的工作原理是...
冒泡排序、选择排序和插入排序是三种基本的排序算法,它们都是在计算机科学中用于组织数据的关键技术。这些算法的实现通常用作教学示例,帮助初学者理解排序过程和时间复杂性。 **冒泡排序(Bubble Sort)**: 冒泡...
以下将详细讲解标题和描述中提到的五种排序算法:选择排序、插入排序、自顶向上合并排序、合并排序以及快速排序。 1. **选择排序(Selection Sort)** 选择排序是一种简单直观的排序算法,它的工作原理是每一次从待...