public class SortAll {
/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
* 2008.11.09
* @author YangL. (http://www.idcn.org)
*/
public static void main(String[] args) {
int[] i = { 1, 5, 6, 12, 4, 9, 3, 23, 39, 403, 596, 87 };
System.out.println("----冒泡排序的结果:");
maoPao(i);
System.out.println();
System.out.println("----选择排序的结果:");
xuanZe(i);
System.out.println();
System.out.println("----插入排序的结果:");
chaRu(i);
System.out.println();
System.out.println("----希尔(Shell)排序的结果:");
shell(i);
}
// 冒泡排序
public static void maoPao(int[] x) {
for (int i = 0; i < x.length; i++) {
for (int j = i + 1; j < x.length; j++) {
if (x[i] > x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 选择排序
public static void xuanZe(int[] x) {
for (int i = 0; i < x.length; i++) {
int lowerIndex = i;
// 找出最小的一个索引
for (int j = i + 1; j < x.length; j++) {
if (x[j] < x[lowerIndex]) {
lowerIndex = j;
}
}
// 交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 插入排序
public static void chaRu(int[] x) {
for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦
for (int j = i; j > 0; j--) {
if (x[j] < x[j - 1]) {
int temp = x[j];
x[j] = x[j - 1];
x[j - 1] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 希尔排序
public static void shell(int[] x) {
// 分组
for (int increment = x.length / 2; increment > 0; increment /= 2) {
// 每个组内排序
for (int i = increment; i < x.length; i++) {
int temp = x[i];
int j = 0;
for (j = i; j >= increment; j -= increment) {
if (temp < x[j - increment]) {
x[j] = x[j - increment];
} else {
break;
}
}
x[j] = temp;
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
}
分享到:
相关推荐
Java 类实现的五种排序算法包括冒泡排序、选择排序、插入排序、希尔排序以及数组排序(实际上这里指的是使用 `java.util.Arrays.sort()` 方法)。这些排序算法是数据结构与算法领域中的基本操作,用于对一组数值进行...
在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些算法通过比较和交换元素来达到数组元素的有序状态。本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的...
在编程领域,数组排序是基础且重要的操作,尤其是在Java中。本篇文章将深入探讨四种基本的排序算法:冒泡排序、选择排序、插入排序以及希尔排序,并结合递归算法的复杂度进行分析。这些排序算法在不同的场景下有不同...
Java数组排序:冒泡排序、选择排序 、插入排序 、快速排序、希尔排序、堆排序和归并排序 三种Java数组复制方法 Java数组最大最小值 四种合并Java数组方法 Java数组升降序排序 Java数组查找:二分查找、顺序查找、...
4. **希尔排序**:希尔排序是插入排序的优化版,它通过将数组按照一定的增量分组进行插入排序,然后逐渐减小增量,直到增量为1,完成排序。Java实现时,需要定义增量序列,如初始值为数组长度的一半,然后每次减半,...
根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍冒泡排序、选择排序、插入排序、希尔排序以及利用Java内置方法进行排序这五种排序算法的具体实现过程及其背后的逻辑原理。 ### 一、冒泡排序 冒泡...
【Java数组排序算法详解】 在Java编程中,排序是一项基础且重要的任务,尤其是在处理大量数据时。本文将深入探讨几种常见的数组排序算法,包括插入排序、交换排序、选择排序和归并排序,以及基数排序。这些算法在...
在Java编程中,数组排序是常见的操作,有多种算法可供选择。本文主要介绍四种常见的排序算法:冒泡排序、快速排序、希尔排序和选择排序。这些算法各有特点,适用于不同的场景。 1. **冒泡排序**: 冒泡排序是一种...
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
【Java 数组排序算法详解】 在 Java 中,有多种排序算法可以用来对数组进行排序,这些算法根据不同的工作原理和效率被分为不同的类别。本文将详细介绍以下几种排序算法:插入排序、交换排序、选择排序、归并排序...
### Java 数组排序知识点 #### 排序算法的分类及适用场景 在计算机科学中,排序算法是一项重要的技术,用于对数据集进行有序排列。排序算法可以分为多种类型,每种都有其特定的应用场景和效率特点。根据文档提供的...
希尔排序是插入排序的一种优化版本,通过设定一个增量序列,将待排序的数组按照增量分成多个子序列,对每个子序列进行插入排序,最后减小增量,直至为1,整个数组有序。这种方法减少了元素移动的次数,提高了排序...
### Java数组排序源代码分析与理解 #### 一、概览 本文将深入解析一个包含多种排序算法(冒泡排序、选择排序、插入排序、希尔排序)的Java程序,并通过具体的代码实现来帮助读者理解这些排序算法的工作原理及其实现...
八种排序算法原理及Java实现是排序算法中的一种,包括冒泡排序、快速排序、直接插入排序、希尔排序、选择排序、归并排序和基数排序等。 冒泡排序是八种排序算法中的一种,属于交换排序。冒泡排序的基本思想是重复...
这里我们将深入探讨快速排序、归并排序、希尔排序、冒泡排序、选择排序以及插入排序这六种经典的排序算法,并通过Java语言来实现它们。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是基于分治策略的一种高效...
列举五种java数组中常用的排序方法:快速排序、冒泡排序、选择排序、插入排序、希尔排序
当数据规模较小时,应选择直接插入排序或冒泡排序。如果全部是正整数,可以考虑使用桶排序为最优。考虑数据已有顺序,快速排序是一种不稳定的排序(当然可以改进),对于大部分排好的数据,快速排序会浪费大量不必要...