资料来自网络参考:
/**
* 插入排序:直接插入排序
* @author 清王
* @from 贵州省凯里市
* @date 2010-09-26 杭州 阴天有小雨
* @QQ 997263515 希望认识每一位IT朋友
*/
public class InsertSort {
private static final int ARRAYLENGHT = 10;
private static int[] pData = new int[ARRAYLENGHT+1];
public static void main(String[] args) {
// 随机生成待排数组,数组的第一个不赋值
for (int i = 1; i < pData.length; i++)
pData[i] = (int) (Math.random() * 100);
for (int i = 1; i < pData.length; i++)
System.out.print(pData[i] + " ");
System.out.println("");
// 直接插入排序
InsertSort.insertSort(pData);
System.out.println("\n***********************");
for (int i = 1; i < pData.length; i++)
System.out.print(pData[i] + " ");
System.out.println("\n"+"pData[0] value is "+pData[0]);
}
public static void insertSort(int[] pData) {
// 对顺序表pData中的记录pData[1...n]按递增序进行插入排序
int i, j;
for (i = 2; i < pData.length; i++)//依次插入pData[2],...,pData[n]
if (pData[i] < pData[i - 1]) {//若pData[i]大于等于有序区中所有的值,
//则pData[i]应在原有位置上
pData[0] = pData[i];//pData[0]是pData[i]的副本
j = i - 1;
do {//从右向左在有序区 pData[1..i-1]中查找pData[i]的插入位置
pData[j + 1] = pData[j];//将大于pData[i]的记录后移
j--;
} while (pData[0] < pData[j]);// 当pData[i]>=pData[j]时终止
pData[j + 1] = pData[0];// pData[i]插入到正确的位置上
}// end if
}// InsertSort
}
//方法二:高效防止“+”溢出
public static void insertSort2(int[] pData){
for(int i=1;i<pData.length; i++){
if(pData[i]<pData[i-1]){
for(int j=i;j>=1;j--){
if(pData[j]>pData[j-1]){
continue;
}
pData[j] = pData[j] ^ pData[j-1];
pData[j-1] = pData[j] ^ pData[j-1];
pData[j] = pData[j] ^ pData[j-1];
}
}
}
}
分享到:
相关推荐
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
下面我们将详细探讨Java实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...
总的来说,Java中的直接插入排序算法是一个直观易懂的排序方法,虽然在效率上不敌更高级的排序算法,但它在理解和实现上相对简单,对于初学者来说是很好的学习材料。通过阅读和实践这个源代码,你可以深入理解排序...
本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...
直接插入排序 java实现~你值得拥有~
在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
JAVA实现插入排序,简单演示
- 直接插入排序:将每个元素插入到已排序部分的正确位置,每次插入都会导致已排序部分的一次调整。 - 折半插入排序:在插入过程中采用二分查找找到插入位置,减少了比较次数,但整体时间复杂度仍为O(n^2)。 - ...
2. 直接插入排序: 直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。这个过程在代码中通过"insert"函数实现,它将新元素与已排序的部分依次比较,找到合适的位置插入。...
综上所述,这段代码展示了如何使用Java实现一种特殊的插入排序,其中包含了数组的操作、条件判断以及循环控制等内容。此外,通过引入二分查找的概念,还可以进一步优化插入排序算法的性能。这种排序方法适用于较小...
在给定的`Sort`文件中,可能包含了实现直接插入排序的源代码,通常使用C、C++、Java或Python等编程语言。这些程序会包含一个循环结构,遍历数组并进行比较、移动和插入操作。通过阅读和理解这些代码,可以加深对直接...
做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)
本文将介绍两种常见的排序算法:直接插入排序和希尔排序,并通过Java代码实现来帮助理解。 1. 直接插入排序(直接插入排序) 直接插入排序是一种简单的排序方法,它的工作原理类似于我们平时手动整理扑克牌。在排序...
- 直接插入排序:将每个元素插入到已排序部分的正确位置,适用于小规模或基本有序的数据。 - 折半插入排序:在插入过程中使用二分查找降低查找位置的时间复杂度,提高了效率。 - 希尔排序:通过设置间隔序列,...
- 直接插入排序:将一个元素逐个插入已排序的序列中,时间复杂度为O(n^2),在数据接近有序的情况下,性能提升到O(n)。 - 希尔排序:通过设置间隔序列,将大数组分为多个子序列,对每个子序列进行插入排序,最后再...
直接插入排序的基本思想是将未排序的元素逐个插入到已排序的序列中。折半插入排序则是通过二分查找来确定插入位置,减少了比较的次数。希尔排序是一种改进的插入排序,它通过设置间隔序列来减少元素的移动次数。 2....
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
JAVA单链表(多项式)直接插入排序 JAVA单链表(多项式)直接插入排序
本篇文章将深入探讨四种基本的排序算法:冒泡排序、选择排序、插入排序以及希尔排序,并结合递归算法的复杂度进行分析。这些排序算法在不同的场景下有不同的效率表现,理解它们的原理和复杂度可以帮助我们更好地选择...