插入排序算法步骤
1.从有序数列和无序数列{a2,a3,…,an}开始进行排序;
2.处理第i个元素时(i=2,3,…,n) , 数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
3.重复第二步,共进行n-1次插入处理,数列全部有序。
我的做法(感觉代码有点乱)
import java.util.ArrayList;
import java.util.List;
public class InsertSort {
public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组
public static void main(String[] args){
List list = new ArrayList();
for(int jj : a){
InsertSort(a);
list.add(a[a.length-1]);
a[a.length-1] = 0;
}
for(int ee =0;ee<list.size();ee++){
System.out.println(list.get(ee));
}
System.out.println();
}
public static void InsertSort(int[] a){
List listSource = new ArrayList();
int tmp = 0;
for(int j=0 ; j<a.length; j++){
if(j == a.length-1){
continue;
}
if(a[j]>a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
System.out.println("The biggest is : "+ a[a.length-1]);
}
}
参考一下网上的例子 :
public class Test {
public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组
public static void main(String args[]) {
int i; // 循环计数变量
int Index = a.length;// 数据索引变量
System.out.print("排序前: ");
for (i = 0; i < Index - 1; i++)
System.out.print(" " + a[i] + " ");
System.out.println("");
InsertSort(Index - 1); // 选择排序
// 排序后结果
System.out.print("排序后: ");
for (i = 0; i < Index - 1; i++)
System.out.print(" " + a[i] + " ");
System.out.println("");
}
public static void InsertSort(int Index) {
int i, j, k; // 循环计数变量
int InsertNode; // 欲插入数据变量
for (i = 1; i < Index; i++) // 依序插入数值
{
InsertNode = a[i]; // 设定欲插入的数值
j = i - 1; // 欲插入数组的开始位置
// 找适当的插入位置
while (j >= 0 && InsertNode < a[j]) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = InsertNode; // 将数值插入
// 打印目前排序结果
System.out.print("排序中: ");
for (k = 0; k < Index; k++)
System.out.print(" " + a[k] + " ");
System.out.println("");
}
}
}
运行结果
排序前: 10 32 1 9 5 7 12 0 4
排序中: 10 32 1 9 5 7 12 0 4
排序中: 1 10 32 9 5 7 12 0 4
排序中: 1 9 10 32 5 7 12 0 4
排序中: 1 5 9 10 32 7 12 0 4
排序中: 1 5 7 9 10 32 12 0 4
排序中: 1 5 7 9 10 12 32 0 4
排序中: 0 1 5 7 9 10 12 32 4
排序中: 0 1 4 5 7 9 10 12 32
排序后: 0 1 4 5 7 9 10 12 32
分享到:
相关推荐
此外,文档还包括一个逐步指南,介绍了如何在Java中实现插入排序,包括详细的代码示例和实现细节。 文档还涵盖了高级主题,如如何优化代码以提高性能以及如何处理大的数组。该资源包括实用练习,让读者可以练习在...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
详解Java常用排序算法-插入排序
java排序算法java排序算法插入选择冒泡java排序算法插入选择冒泡
插入排序算法java代码,望对大家有帮助
实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法的java实现。
java实现的常用的几种基本排序算法,插入、交换、选择、归并
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
提供冒泡 快速 插入 选择 排序算法java源代码及测试程序
编写选择排序,插入排序,自顶向上合并排序,合并排序,快速排序,理解各排序算法的实现原理,加深对排序算法的理解。
java编写的插入排序算法
该文档涵盖了数组排序的基本概念,包括如何实现各种排序算法,如冒泡排序、选择排序、插入排序、归并排序和快速排序。此外,文档还为每个排序算法提供了详细的代码示例和实现细节。 该文档还涵盖了高级主题,如如何...
在Java中,插入排序的实现通常涉及两个嵌套的循环。外层循环用于遍历未排序的元素,内层循环则用于在已排序序列中查找待插入元素的位置,并进行相应的元素移动和插入操作。尽管插入排序在处理大数据集时效率不高,但...
常见排序算法的实现与性能比较JAVA 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0...
用蛮力法实现选择排序,冒泡排序程序;用减治法实现插入排序;分治法应用-快排,合并排序,0-1背包问题;Prim算法求最小生成树。伪代码以及java代码实现
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、...
Java各种排序算法代码,冒泡,插入,希尔,快速,堆等排序代码
总结了常用的八大排序算法:(交换式:1、冒泡,2、快排; 选择式:3、选择, 4、堆排; 插入式:5、插入, 6、希尔; 其他:7、归并, 8、基数排序)。 并包含了Java实现的源代码。