package sort;
/**
*/
public class Sort {
/**
* 选择排序:
* 首先在数组中查找最小值, 如果该值不在第一个位置, 那么将其和处在第一个位置的元素交换,然后从第二个位置重复
* 此过程,将剩下元素中最小值交换到第二个位置 。当到最后一位 时,数组排序结束
* 复杂度为:O(n^2)
*
* @param array
*/
static void selectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min_idx]) {
min_idx = j;
}
}
if (min_idx != i) {
swap(array, min_idx, i);
}
}
}
/**
* 冒泡排序法:
* 是运用数据值比较后,依判断规则对数据位置进行交换,以达到排序的目的
* 复杂度都是O(n^2)
*
* @param array
*/
public static void bubbleSort(int[] array) {// 冒泡排序算法
int out, in;
// 外循环记录冒泡次数
for (out = array.length - 1; out >= 1; out--) {
boolean flag = false;
// 进行冒泡
for (in = 0; in < out; in++) {
// 交换数据
if (array[in] > array[in + 1]) {
swap(array, in, in + 1);
flag = true;
}
}
if (!flag) {
break;
}
}
}
/**
* 插入排序
* 是对于欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。
* 插入排序的最差和平均情况的性能是O(n^2)
*
* @param array
*/
public static void insertSort(int[] array) {// 插入排序算法
int in, out;
for (out = 1; out < array.length; out++) {// 外循环是给每个数据循环
int temp = array[out]; // 先取出来保存到临时变量里
in = out; // in是记录插入数据之前的每个数据下标
// while内循环是找插入数据的位置,并且把该位置之后的数据(包括该位置)
// 依次往后顺移。
while (in > 0 && array[in - 1] >= temp) {
array[in] = array[in - 1]; // 往后顺移
--in; // 继续往前搜索
}
array[in] = temp; // 该数据要插入的位置
}
}
/**
* 交换数组数据
*
* @param array
* @param min_idx
* @param i
*/
private static void swap(int[] array, int min_idx, int i) {
int temp = array[min_idx];
array[min_idx] = array[i];
array[i] = temp;
}
public static void main(String[] args) {
int[] array = new int[] { 1, 2, 6, 5, 7, 9, 0, 121, 4545 };
bubbleSort(array);
for (int i : array) {
System.out.println(i);
}
}
}
分享到:
相关推荐
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
java可运行排序算法:①插入排序、②冒泡排序、③选择排序、④学生学号按照成绩高低排序的一个简单实例。在java工程项目的源文件src中建立Array包,可运行这四个.java文件,便于对java中的排序算法及数组结构进一步...
java实现10种排序算法:选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排_sorting-algorithms
java8中经典排序算法:插入排序、堆排序,选择排序、希尔排序,基数排序、冒泡排序、归并排序、快速排_Arithmetic
这里我们将深入探讨标题和描述中提到的六种排序算法:快速排序、归并排序、插入排序、冒泡排序、选择排序以及堆排序。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是一种高效的分治算法。快速排序的基本思想是...
Java 算法:冒泡,选择,插入排序算法
本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
总的来说,这段代码提供了四种排序算法的实现,分别是冒泡排序、选择排序、插入排序以及Java内置的数组排序。每种排序算法都有其适用场景,理解这些算法可以帮助我们更好地解决实际问题,并根据需求选择合适的排序...
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
java排序算法java排序算法插入选择冒泡java排序算法插入选择冒泡
这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一深入理解这些算法。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...
用 Java 实现冒泡排序算法 冒泡排序是一种简单的排序算法,它的基本思想是通过反复比较和交换相邻元素的位置来实现排序。下面是用 Java 实现冒泡排序算法的详细解释: 1. 排序方法 冒泡排序的排序方法是将被排序...
以下是根据标题和描述中提到的四种排序算法——冒泡排序、快速排序、插入排序和选择排序的详细说明。 **冒泡排序(BuddleSort)**: 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的列表,比较相邻元素并...
本资源包含了几种基本的排序算法,如冒泡排序、选择排序和插入排序,这些都是理解和学习算法的基础。 **冒泡排序**是最基础的排序算法之一,它通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把...
本篇文章将深入探讨五种常见的排序算法,并以Java编程语言为实现背景。这些算法包括冒泡排序、插入排序、选择排序、归并排序以及快速排序。 **冒泡排序**是一种基础的排序方法,它通过重复遍历数组,比较相邻元素并...
除了冒泡排序之外,还有其他各种高效的排序算法,如快速排序、归并排序、堆排序、插入排序、选择排序等。每种算法都有各自的优势和局限性,适合不同的使用场景。 快速排序是一个高效的排序算法,采用分治法来把一个...
本主题将深入探讨Java中三种基础的排序算法:冒泡法、选择法和插入法。 1. **冒泡排序(Bubble Sort)**: 冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就...
以下是关于Java实现的七种排序算法的详细说明: 1. **冒泡排序(Bubble Sort)**: 冒泡排序是一种简单的排序算法,通过不断交换相邻两个元素的位置来逐步将较大的元素推向数组的后部。它的主要思想是重复遍历数组...
在本文中,我们将深入探讨Java实现的八个经典排序算法,包括它们的工作原理、时间复杂度以及如何用Java代码实现。 1. **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理是通过构建...