public class InsertSort {
public void insertionSort(int[] arr, int length) {
int unsortedIndex,location;
int temp;
for(unsortedIndex=1;unsortedIndex<length;unsortedIndex++){
if(arr[unsortedIndex]<arr[unsortedIndex-1]){
temp=arr[unsortedIndex];
location=unsortedIndex;
do{
arr[location]=arr[location-1];
location--;
}while(location>0&&arr[location-1]>temp);
arr[location]=temp;
}
}
}
public static void main(String[] args) {
int arr[] = { 2, 568, 34, 46, 9, 23, 89, 43, 572, 684, 783, 543 };
InsertSort is=new InsertSort();
is.insertionSort(arr, 12);
for (int i = 0; i < 12; i++) {
System.out.print(arr[i] + ",");
}
}
}
图解:
- 大小: 112 KB
分享到:
相关推荐
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一个增量序列分成若干个子序列,然后分别对子序列进行插入排序,最后再进行一次全局的插入...
2. 插入排序:插入排序的工作方式类似于玩扑克牌,将每张新牌插入到已排序的牌堆中的正确位置。它分为两个阶段:构建有序区和扫描未排序区。对于小规模数据,插入排序效率较高。 3. 选择排序:选择排序每次从未排序...
2. Java常用算法和数据结构:冒泡排序、选择排序、插入排序、链表、树等。 3. Java网络编程基础知识:TCP/IP协议、Socket编程、HTTP协议等。 4. Java Web开发基础知识:Servlet、JSP、JavaBean、MVC模式等。 本书...
插入排序分为直接插入排序和希尔排序。直接插入排序是将每个元素插入到已排序的部分,找到合适的位置插入。希尔排序则是改进版,通过间隔序列分组,对每组进行插入排序,逐步减小间隔直到为1,提高效率。 2. 选择...
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、...插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、...
插入排序是一种简单的排序算法,思路是将数组分成两个部分,左边的部分是已经排序的,右边的部分是还没有排序的,然后从右边的部分选择一个元素,插入到左边的部分中,使左边的部分保持排序的状态。时间复杂度为 O(n...
此外,对于小数组,直接使用插入排序可能更快,因为插入排序在小规模数据上的效率更高。 总的来说,快速排序是计算机科学中常用的排序算法之一,它的效率和实用性使其在各种场景下都有广泛的应用。通过理解和掌握...
- **数组(Array)**:在Java中,数组是一种基本的数据结构,可以存储相同类型的多个元素。它通过索引访问元素,提供快速的随机访问。 - **链表(List)**:分为单向链表、双向链表等类型。链表中的每个元素都包含指向...
插入排序 对象排序 几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link)...
快速排序算法(Quick Sort)是一种高效的排序算法,由计算机科学家托尼·...对于快速排序的优化和变体,如随机化快速排序、插入排序与快速排序的混合使用等方法,都是计算机科学和软件工程领域研究和实践的热门话题。
10. **排序算法**:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,理解其原理和效率。 11. **查找算法**:线性查找、二分查找、哈希查找等,以及它们在不同数据结构上的应用。 12. **递归与分治策略...
1. **排序算法**:冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。 2. **搜索算法**:线性搜索、二分搜索、广度优先搜索(BFS)、深度优先搜索(DFS)。 3. **动态规划**:解决最优化问题,如背包...
1. **排序算法**:包括冒泡排序、选择排序、插入排序、快速排序、归并排序等,它们用于将一组数据按特定顺序排列。 2. **搜索算法**:如二分查找、广度优先搜索(BFS)、深度优先搜索(DFS),用于在数据结构中寻找目标...
在《Hello 算法》中,你可以期待学习到排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)、搜索算法(如线性搜索、二分搜索、哈希搜索等)、图算法(如Dijkstra最短路径算法、Floyd-Warshall所有对...
排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)用于将数据按特定顺序排列。搜索算法(线性搜索、二分搜索、广度优先搜索、深度优先搜索等)用于在数据中查找特定元素。此外,还有动态规划...
ArrayList基于动态数组,它提供了快速的随机访问,但插入和删除元素的速度相对较慢,因为涉及到数组的移动。LinkedList则通过双向链表实现,它的插入和删除操作速度快,但在随机访问元素时效率较低。 Set接口的实现...
- **插入排序**:将未排序的元素逐个插入到已排序部分的正确位置,时间复杂度为O(n^2)。 - **快速排序**:使用分治策略,选取一个基准值,将数组分为两部分,时间复杂度平均为O(n log n)。 - **归并排序**:也是...