1.冒泡排序
*
* 冒泡排序基本概念是:
* 依次比较相邻的两个数,将小数放在前面,大数放在后面。
* 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。
* 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,
* 直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,
* 将最大的数放到了最后。在第二趟:仍从第一对数开始比较
* (因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),
* 将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),
* 第二趟结束,在倒数第二的位置上得到一个新的最大数
* (其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
*/
publicclass BubbleSort {
publicstaticvoid sort(int[] data) {
for (inti = 0; i < data.length - 1; i++) {
for (intj = 0; j < data.length - 1 - i; j++) {
if (data[j] > data[j + 1]) {
SortTest.swap(data, j, j + 1);
}
}
}
}
}
2.选择排序
/*
* 选择排序基本思路:
* 把第一个元素依次和后面的所有元素进行比较。
* 第一次结束后,就会有最小值出现在最前面。
* 依次类推
*/
publicclass SelectionSort {
publicstaticvoid sort(int[] data) {
for (intx = 0; x < data.length - 1; x++) {
for (inty = x + 1; y < data.length; y++) {
if (data[y] < data[x]) {
SortTest.swap(data, x, y);
}
}
}
}
}
3.插入排序
/*
* 插入排序基本思想
* 将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示:
* {{a1},{a2,a3,a4,…,an}}
* {{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}
* {{a1(n-1),a2(n-1) ,…},{an(n-1)}}
* 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,
* 找出插入位置,将该元素插入到有序数列的合适位置中。
*/
publicclass InsertSort {
publicstaticvoid sort(int[] data) {
for (inti = 1; i < data.length; i++) {
for (intj = i; (j > 0) && (data[j] < data[j - 1]); j--) {
SortTest.swap(data, j, j - 1);
}
}
}
}
/*
* 交换数组中的两个元素
*/
Public class SortTest{
publicstaticvoid swap(int[] data, inti, intj) {
inttemp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
相关推荐
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
总的来说,这段代码提供了四种排序算法的实现,分别是冒泡排序、选择排序、插入排序以及Java内置的数组排序。每种排序算法都有其适用场景,理解这些算法可以帮助我们更好地解决实际问题,并根据需求选择合适的排序...
C++实现选择排序的主要代码如下: ```cpp void selectionSort(int arr[], int n) { for (int i = 0; i ; i++) { int min_idx = i; for (int j = i + 1; j ; j++) if (arr[j] [min_idx]) min_idx = j; ...
插入排序在实现上,通常采用in-place排序(即只需要用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 在`Insert.java`文件中,插入排序的实现...
这里提到的"插入冒泡选择堆等常用排序源代码"涵盖了三种经典的排序算法:插入排序、冒泡排序和选择排序,以及堆排序。这四种排序算法各有特点,适用于不同的场景。 首先,让我们逐一探讨这些排序算法: 1. **插入...
本篇文章将深入探讨并详细解析三种基本的排序算法:冒泡排序、插入排序以及选择排序,这三种算法均使用C语言实现。 ### 冒泡排序 冒泡排序是一种简单的比较排序算法,其基本思想是重复地走访过要排序的数列,一次...
本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**冒泡排序**。冒泡排序是一种简单的交换排序方法,它通过不断比较相邻元素并交换...
本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...
- 在C++中,实现选择排序通常涉及两个循环,外层循环控制排序趟数,内层循环用于找到当前未排序部分的最小值并交换。 2. **冒泡排序(Bubble Sort)** - 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,...
本资源包含三个经典的排序算法的源代码:插入排序、选择排序和冒泡排序,这些都是初级到中级程序员常学习和使用的算法。下面将详细介绍这三个排序算法的工作原理、特点以及代码实现。 1. **插入排序(Insertion ...
本文将详细介绍三种经典的排序算法:选择排序、冒泡排序和插入排序,并结合Java代码进行分析。 ### 1. 选择排序(Selection Sort) 选择排序的主要思想是每次从待排序的数据元素中选出最小(或最大)的一个元素,...
根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....
根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...
根据给定的信息,本文将详细介绍五种经典的排序算法在 C# 中的应用,包括选择排序、冒泡排序、快速排序、插入排序以及希尔排序。 ### 一、选择排序 选择排序是一种简单直观的比较排序算法。它的工作原理是通过从未...
通过对冒泡排序、选择排序、插入排序以及快速排序四种经典排序算法的Java实现及效率对比可以看出,虽然它们都能实现数组的排序功能,但在处理大规模数据时,快速排序由于其较好的时间复杂度表现,通常能提供更优的...
基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。 **示例代码解析**: ```csharp using System; namespace ...
在源程序文件中,我们编写了实验的主体代码,包括直接插入排序、冒泡排序和简单选择排序三种排序算法的实现。在头文件中,我们定义了 SqList 结构体和相关函数的声明。 实验结果表明,三种排序算法都能够正确地排序...
给定代码中插入排序的具体实现如下: ```c scanf("%d", &number); last = a[9]; if(number > last) a[10] = number; else { for(i=0; i; i++) { if(a[i] > number) { temp_1 = a[i]; a[i] = number; for(j=i+1; ...
在本文中,我们将深入探讨三种基本的排序算法:插入排序、选择排序和冒泡排序。这些算法是计算机科学中基础且重要的部分,特别是在理解数据结构和算法效率方面。以下是对每种排序算法的详细说明: **插入排序...