直接插入排序算法,含部分理解,不知道对不对,但是看例子是可以看明白的。
下图有助理解,于是截图看看:
public int[] insertSort(int[] a) {
/**
* 直接插入排序
* 把第一个数作为基准,所以排序的循环次数为n-1次 从第二个数开始和第一个数比较
* 下面是降序排列
* a[i] < a[i - 1] 如果第二个数小于第一个数,将第二个数记录一下int tmp = a[i]
* 对前面的有序集合进行插入操作 j=i-1
* (永远是对当前需要排序的值,插入到前面已经有序的集合里)
* 从0到i-1 的空间里找出需要插入的位置
*for (; j >= 0 && tmp< a[j]; j--)
*将数据向后移动 直到找到合适的位置
*eg: 假如 i = 3,此时j=2 对下面做插入操作
*(26 48 53) 11 13 48 32 15
* 0 1 2 3 4 5 6 7
* 11<53 则 a[3] = a[2] =53; 此时空出来53的位置 即a[2] 下面接着循环
* 11<48 则 a[2] = a[1] = 48 把 a[1] 的位置让出来了。继续
* 11<26 则 a[1] = a[0] = 26 把a[0] 位置的26 赋值给了a[1] 位置,让出a[0]
* 循环到了尽头,此时j<0 j=-1
* a[j+1] = tmp; 把值插入进去 把这个小的数据插入进去就可以了。
*a[j + 1]= a[j] ;
*
*
*a[j+1] = tmp; 把值插入进去
*
*
*/
for(int i=1;i<a.length;i++){
if(a[i]<a[i-1]){
int tmp = a[i], j = i-1; //从后向前对有序的数进行插入,循环的长度应该是当前操作数的前一个数的索引位置。
//eg:当前操作的是第4个数索引是3,那么插入操作就要针对前面的三个数做,即:j = 3-1=2 即(0-2)这些索引数里面操作。
//下面for循环是:只要比当前操作数大就向后移动一位,让出当前位,如果比当前值小,直接插入到此值的后面
for(;j>=0&&tmp<a[j];j--){
a[j+1] = a[j];
}
a[j+1] = tmp;
}
}
return a;
}
public static void main(String[] args) {
InsertSort is = new InsertSort();
int[] as = { 1, 34, 56, 23, 67, 82, 4, 3, 2, 0, 13, 76, 90, 21, 24, 44,
4 };
int[] a = is.insertSort(as);
System.out.println(Arrays.toString(a));
}
运行结果:[0, 1, 2, 3, 4, 4, 13, 21, 23, 24, 34, 44, 56, 67, 76, 82, 90]
- 大小: 32.1 KB
分享到:
相关推荐
下面我们将详细探讨Java实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...
总的来说,Java中的直接插入排序算法是一个直观易懂的排序方法,虽然在效率上不敌更高级的排序算法,但它在理解和实现上相对简单,对于初学者来说是很好的学习材料。通过阅读和实践这个源代码,你可以深入理解排序...
直接插入排序 java实现~你值得拥有~
标题中的"java直接插入排序示例"是指使用Java编程语言实现的直接插入排序算法的实例。描述中提到,插入排序虽然在最坏情况下的时间复杂度仍然是O(n²),但通常情况下其效率高于冒泡排序和选择排序。这是因为插入排序...
在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...
JAVA实现插入排序,简单演示
本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...
在给定的`Sort`文件中,可能包含了实现直接插入排序的源代码,通常使用C、C++、Java或Python等编程语言。这些程序会包含一个循环结构,遍历数组并进行比较、移动和插入操作。通过阅读和理解这些代码,可以加深对直接...
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
JAVA单链表(多项式)直接插入排序 JAVA单链表(多项式)直接插入排序
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
在这个Java实现中,`sort`方法执行了直接插入排序的过程。`main`方法创建了一个示例数组,并调用`sort`进行排序,最后通过`printArray`方法打印排序前后的数组,以便于验证排序效果。 **性能分析:** - 时间复杂度...
在Java中,直接插入排序可以有多种实现方式,这里我们讨论三种不同的实现: 1. **基础实现(Insertsort1)** 这是最基础的实现,通过两个嵌套循环来完成。外层循环遍历数组中的每一个元素,内层循环则用于找到当前...
本文将介绍两种常见的排序算法:直接插入排序和希尔排序,并通过Java代码实现来帮助理解。 1. 直接插入排序(直接插入排序) 直接插入排序是一种简单的排序方法,它的工作原理类似于我们平时手动整理扑克牌。在排序...
### 使用Java与Python实现直接插入排序 #### 一、直接插入排序概述 直接插入排序是一种简单的排序算法,属于插入类排序。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应...
综上所述,这段代码展示了如何使用Java实现一种特殊的插入排序,其中包含了数组的操作、条件判断以及循环控制等内容。此外,通过引入二分查找的概念,还可以进一步优化插入排序算法的性能。这种排序方法适用于较小...
做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)
"Java编程实现直接插入排序代码示例" 直接插入排序是一种简单的排序算法,它的平均时间复杂度为O(n^2),空间复杂度为O(1),且是一种稳定的排序算法。下面是 Java 编程实现直接插入排序代码示例的详细解释: 首先,...