package test;
public class SimpleSort {
public static void main(String[] args) {
int[] intArray = { 12, 2, 5, 6, 4, 2, 9 };// length=7
display("原数组", intArray);
bubble(intArray);
select(intArray);
insert(intArray);
}
public static void display(String name, int[] intArray) {
System.out.print(name + ": ");
for (int i : intArray) {
System.out.print(i + ",");
}
System.out.print("\n");
}
// 冒泡排序
public static void bubble(int[] ia) {
int[] intArray = ia.clone();
int length = intArray.length;
int temp;
// 迭代起泡
for (int j = 0; j < length; j++) {
// 一次起泡过程
for (int i = 0; i < length - j - 1; i++) { // 第(j+1)次起泡,不需再与最后的j个比较了,它们已经被排好序了
if (intArray[i] > intArray[i + 1]) {// 对比相邻2个的值,判断交换否
temp = intArray[i + 1];
intArray[i + 1] = intArray[i];
intArray[i] = temp;
}
}
}
display("冒泡排序", intArray);
}
// 选择排序
public static void select(int[] ia) {
int[] intArray = ia.clone();
int length = intArray.length;
int temp = intArray[0];
// 迭代每个位置的选择过程,最后位不需要了, 整个数列都排序好了
for (int i = 0; i < length - 1; i++) {
// 一次选择过程
for (int j = i + 1; j < length; j++) {// 从每个位置开始的后面的所有元素,都进行一次比较,
// 把最小的元素方到该位置上
if (intArray[j] < intArray[i]) {
temp = intArray[i];
intArray[i] = intArray[j];
intArray[j] = temp;
}
}
}
display("选择排序", intArray);
}
// 插入排序
public static void insert(int[] intArray) {
int[] ia = intArray.clone();
int length = ia.length;
int temp, j;
// 迭代插入过程, 从左边第二个位置开始,第一个默认当作最小值
for (int i = 1; i < length; i++) {
// 一次插入过程, 把当前位置的值保存到临时变量里
temp = ia[i];
// 迭代当前位置左边的元素,把比当前元素大的值都往右边移动一格
j = i;
while (j > 0 && ia[j - 1] > temp) {
ia[j] = ia[j - 1];
j--;
}
// 比它大的都往右边移动一格了,把当前位置的值插入到空档中
ia[j] = temp;
}
display("插入排序", ia);
}
}
分享到:
相关推荐
总的来说,这段代码提供了四种排序算法的实现,分别是冒泡排序、选择排序、插入排序以及Java内置的数组排序。每种排序算法都有其适用场景,理解这些算法可以帮助我们更好地解决实际问题,并根据需求选择合适的排序...
本篇文章将详细讨论几种常见的排序算法:选择排序、冒泡排序、插入排序、合并排序以及快速排序,分析它们的算法原理、时间效率,并通过经验分析验证理论分析的准确性。 **1. 选择排序(Selection Sort)** 选择排序...
Python算法之---冒泡,选择,插入排序算法.py
冒泡排序(Bubble Sort)是一种简单的排序算法,其工作原理是通过重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列...
经典排序算法 - 插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonhole sort 经典排序算法 - 归并排序Merge sort 经典排序算法 - 冒泡排序Bubble sort 经典排序算法 - ...
本主题将详细探讨四种常见的排序算法:选择排序、插入排序、快速排序以及冒泡排序,它们都是用C语言实现的。以下是这些排序算法的详细解析: 1. **选择排序(Selection Sort)** - 选择排序是一种简单直观的排序...
排序算法之冒泡、选择、插入、快速排序 在计算机科学中,排序算法是最基本也是最重要的算法之一。排序算法的主要任务是将一个无序的数据序列转换为一个有序的数据序列。常用的排序算法有冒泡排序、选择排序、插入...
1. 冒泡排序(Bubble Sort):冒泡排序是最简单的排序算法之一,通过不断交换相邻的不正确顺序元素,使较大的元素逐渐“浮”到序列的末尾。它的时间复杂度为O(n^2)。 2. 选择排序(Selection Sort):选择排序每次...
本资源包含三个经典的排序算法的源代码:插入排序、选择排序和冒泡排序,这些都是初级到中级程序员常学习和使用的算法。下面将详细介绍这三个排序算法的工作原理、特点以及代码实现。 1. **插入排序(Insertion ...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换,也就是说该数列已经排序完成。 #### 实现...
c语言实现三种排序算法(冒泡,插入,快速)
1. **冒泡排序**:这是一种简单的排序算法,通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡...
选择排序算法也是一种简单的排序算法,它的工作原理是通过选择最小或最大元素,并将其与第一个元素交换,以达到排序的目的。选择排序算法的时间复杂度也为O(n^2),因此它也适合小规模的数据排序。 3.插入排序算法 ...
插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。在C++中,可以使用两层循环实现,外层循环控制未排序部分,内层循环寻找插入...
在实际使用中,根据数据特性选择合适的排序算法至关重要,例如,对于小规模数据或部分有序的数据,简单的排序算法如冒泡或插入排序可能更合适;而对于大规模数据,效率较高的排序算法如快速排序和合并排序是更好的...
在这个例子中,可能会有一个类`SortAlgorithms`包含各种排序算法的成员函数,如冒泡排序、选择排序、插入排序、快速排序等。另一个类`UserInterface`则负责处理用户交互和控制执行哪种排序算法。 3. **排序算法的...
本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...
经典C语言排序算法 ...冒泡排序、选择排序和插入法排序都是基本的排序算法,虽然它们的效率不高,但它们的实现简单易懂,易于学习和理解。同时,这些算法也可以作为其他排序算法的基础,例如快速排序和归并排序等。