public class Sort{
/**
* 直接插入排序
* @param arr
* @return
*/
public static int[] insertSortImpl(int[] arr) {
if(arr != null && arr.length > 0) {
int length = arr.length;
for(int i = 1; i < length; i++) {
int currentData = arr[i];
int tmp = i;
while(tmp > 0 && arr[tmp - 1] > currentData) {
arr[tmp] = arr[tmp -1];
tmp--;
}
arr[tmp] = currentData;
}
}
return arr;
}
/**
* 折半插入排序
* @param arr
* @return
*/
public static int[] halfInsertSort(int[] arr) {
if(arr != null && arr.length >0) {
for(int k = 0 ; k < arr.length; k++) {
int length = arr.length;
int insertDate = arr[length - 1];//将最后一个元素当中待插入元素
int low = 0;
int high = length - 2;
while(low <= high) {
int middle = (low + high) / 2;//获得数组中间元素的下标
if(insertDate < arr[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
for(int j = length - 1; j > high + 1; j--) {
arr[j] = arr[j-1];
}
arr[high + 1] = insertDate;
}
}
return arr;
}
/**
* 希尔排序
*/
public static int[] shellSort(int[] arr) {
int temp;
int length = arr.length;
for(int k = length/2; k>0; k--) {
for(int i = k; i<length; i++) {
if(arr[i-k] > arr[i]) {
temp = arr[i-k];
arr[i-k] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
/**
* 冒泡排序
*/
public static int[] maoPao(int[] arr) {
int length = arr.length;
int temp;
for(int i=length -1; i>0;i--) {
for(int j=0;j<i;j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] =temp;
}
}
}
return arr;
}
}
分享到:
相关推荐
此外,代码中还展示了其他几种排序方法的实现,包括冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点: - 冒泡排序:通过不断交换相邻的逆序元素,逐步将最大(或最小)元素移到数组...
- 在`OrderTest`类中,还提到了其他几种排序算法的实现,如冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点,适用于不同的场景。 - 冒泡排序是一种简单的排序,通过不断交换相邻的...
数据结构中几种排序的实现 数据结构中几种排序的实现
### Java 实现几种常见排序方法 #### 泡泡排序(Bubble Sort) 泡泡排序是一种简单的排序算法,它重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复...
以下是对标题“几种排序方法”和描述中提到的几种排序算法的详细介绍: 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它通过重复遍历待排序的数组,比较相邻元素并交换(如果需要)来完成排序。这个过程会...
常见的几种排序方式,包括选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序。vs2008实现,对话框方式,主要实现字符串的由小到大...点击“几种排序方法.vcproj“运行。字符集使用多字节集,不能用UNICODE。
根据给定的信息,本文将详细介绍Java中的四种基本排序算法:冒泡排序、插入排序、快速排序和选择排序。...以上四种排序算法各有优缺点,适用场景也不同。在实际应用中,根据具体需求选择合适的排序算法是非常重要的。
以上就是JavaScript中常用的几种排序方法。理解并熟练运用它们,能够帮助你在处理数据时更加游刃有余。在实际项目中,可以根据具体需求选择合适的方法,或者利用现有的库和工具提高代码的可读性和可维护性。
php实现的几种排序方法,包括插入排序,选择排序,冒泡排序、快速排序
最后,堆排序是利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。堆排序分为建堆和调整堆两个步骤,最后将堆顶...
随即生成一组数据 可以实现三种排序方法的速度比较
以下是关于这几种排序方法的详细介绍: 1. **堆排序(Heap Sort)** 堆排序是一种基于比较的原地排序算法,它利用了完全二叉树的特性。首先构建大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,再调整堆,重复此...
在这个数据结构报告中,我们将深入探讨七种不同的内排序算法:简单选择排序、冒泡排序、插入排序、快速排序、两路合并排序以及堆排序。这些排序算法在C++语言环境下进行了实现,并且包含了详细的源代码和实验报告,...
几种常见排序 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置。 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 Insertion...
本程序涵盖了数据结构中常见的几种排序方法,下面将对这些排序算法进行详细介绍。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的排序算法之一。它通过不断比较相邻元素并交换位置来实现排序,重复这一过程,直到...
根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出以下关于几种...以上是对几种排序算法及其代码实现的详细介绍,每种算法都有其独特的优势和应用场景,在实际开发中可以根据具体需求选择合适的排序方法。
每种排序算法都有其适用场景,例如,快速排序和归并排序在大数据量时表现出色,而冒泡排序和插入排序则适合小规模数据。理解并熟练掌握这些排序算法的C语言实现,对于提升编程技能和解决实际问题具有重要意义。在...
一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序
使用java实现的选择、冒泡、插入、快速、希尔排序以及折半查找