public class SortAll {
/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
*/
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 + " ");
}
}
}
分享到:
相关推荐
它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目标。快速排序的平均时间复杂度为O(nlogn),...
Java数组常用排序算法实例小结 ...Java数组排序算法有多种实现方式,包括冒泡排序、数组递增排序、快速排序及选择排序等,每种算法都有其优缺点,在实际应用中需要根据具体情况选择合适的排序算法。
Java数组高级算法与Arrays类常见操作小结【排序、查找】 Java数组高级算法与Arrays类常见操作小结是Java数组高级算法的核心内容之一。本文主要介绍了Java数组高级算法与Arrays类常见操作,结合实例形式总结分析了...
本篇文章将详细解析Java中常见的排序方法,结合"javaeye 收集的java排序小结"资料,旨在帮助读者理解和掌握这些排序算法。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的排序算法之一,通过重复遍历数组,比较...
这篇博客“常用排序算法小结(附Java实现)”提供了一种深入理解并掌握常见排序算法的途径,尤其对于Java开发者来说非常实用。文章可能涵盖了如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等多种经典...
在Java编程语言中,数组是一种非常基础且重要的数据结构,用于存储同类型的多个元素。下面是对Java中数组相关知识的详细总结: 1. **数组的声明与初始化** - 在Java中,数组可以通过以下几种方式声明和初始化: -...
创建Java数组可以使用静态初始化和动态初始化,遍历Java数组可以使用普通for循环和增强for循环,排序Java数组可以使用Arrays.sort()方法,查找Java数组可以使用遍历数组的方法,栈可以用于实现递归算法,断点语句和...
在Java编程中,删除排序数组中的重复元素是一个常见的问题,特别是在数据处理和算法优化的场景。本篇文章将探讨三种不同的方法来实现这个功能,并对比它们的优劣。 首先,第一种方法是通过`ArrayList`来解决。这种...
在Java编程中,排序是常见的操作,涉及到数组和集合。本文将重点介绍如何使用Java标准库中的`java.util.Arrays`和`java.util.Collections`类来对数组和集合进行排序。 首先,`Arrays`类提供了对数组进行排序的功能...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序...
Java 数组元素倒序的三种方式中,方式一的时间复杂度是最低的,但它需要手动实现倒序的逻辑。方式二和方式三则可以使用现有的工具类来实现倒序,但它们的时间复杂度相对较高。因此,在实际开发中,需要根据具体情况...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序 选择排序 ...
### 小结 以上四种排序算法都是学习和了解排序概念的基础。它们各有优缺点,在不同的应用场景下有着不同的表现。在实际开发过程中,根据具体需求选择合适的排序算法是非常重要的。例如,对于小规模数据集,插入排序...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡...
### 小结 本文详细介绍了Java中的数组和三种简单的排序算法——冒泡排序、选择排序和插入排序。每种排序算法都有其特点和适用场景。了解这些基本概念和技术对于学习更复杂的算法和数据结构非常有帮助。
在这篇文章中,我们将深入探讨JavaScript数组的创建、元素访问与修改、添加、删除、截取、合并、拷贝、排序以及字符串化等操作,并介绍数组对象的三个重要属性。 1. **数组的创建**: - `new Array()`:创建一个空...
11.11 编程练习 第12章 搜索与排序 12.1 搜索 12.2 排序 12.3 评估算法效率 12.4 使用数据文件 12.5 小结 12.6 复习题 12.7 编程练习 第13章 数组与ArrayList类 13.1 ArrayList类回顾 13.2 HashMap类 13.3 Java集合...
Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡...
在**字符串练习一**中,我们展示了如何使用`compareTo`方法对字符串数组进行排序。`compareTo`是`String`类的一个方法,它根据Unicode值比较两个字符串。如果第一个字符串大于第二个字符串,`compareTo`返回正整数;...
1.8 小结 1.9 复习题 第2章 编程示例 2.1 “Hello world”程序 2.2 编程过程的观点 2.3 两数相加的程序 2.4 编程习语和模式 2.5 类和对象 2.6 图形程序 2.7 小结 2.8 复习题 2.9 编程练习 第3...