public class ArraySort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = { 100, 3, 0, 4, 5, 7, 23, 22, 33, 35, 76, 3, 32, 32, 98 };
System.out.println("目标数组为:");
print(a);
System.out.println("冒泡排序后的数组为:");
print(bubbleSort(a));
System.out.println("选择排序后的数组为:");
print(selectSort(a));
System.out.println("插入排序后的数组为:");
print(insertSort(a));
System.out.println("快速排序之后的数组为:");
print(quickSort(a, 0, a.length-1));
}
// 冒泡排序
public static int[] bubbleSort(int data[]) {
for (int i = 0; i < data.length; i++) {
int temp = 0;
for (int j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
return data;
}
// 选择排序
public static int[] selectSort(int data[]) {
for (int i = 0; i < data.length; i++) {
int index = 0;
int temp;
for (int j = 1; j < data.length - i; j++) {
if (data[index] < data[j]) {
index = j;
}
}
temp = data[index];
data[index] = data[data.length - 1 - i];
data[data.length - 1 - i] = temp;
}
return data;
}
// 插入排序
public static int[] insertSort(int data[]) {
for (int i = 1; i < data.length; i++) {
int temp = 0;
for (int j = 0; j < i; j++) {
if (data[i] < data[j]) {
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
return data;
}
// 快速排序
public static int[] quickSort(int data[], int from, int to) {
int p;
if (from < to) {
p = position(data, from, to);
quickSort(data, from, p - 1);
quickSort(data, p + 1, to);
}
return data;
}
//求data[from]这个元素在排好序之后的数组里面的位置,并将该位置的值附为data[from]
public static int position(int data[], int from, int to) {
int i = from;
int j = to;
int temp = data[i];
while (i < j) {
while (i < j && data[j] > temp) {
j--;
}
if (i < j) {
data[i] = data[j];
i++;
}
while (i < j && data[i] < temp) {
i++;
}
if (i < j) {
data[j] = data[i];
j--;
}
}
data[i] = temp;
return i;
}
// 打印数组
public static void print(int[] data) {
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
运行结果:
目标数组为:
100 3 0 4 5 7 23 22 33 35 76 3 32 32 98
冒泡排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
选择排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
插入排序后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
快速排序之后的数组为:
0 3 3 4 5 7 22 23 32 32 33 35 76 98 100
分享到:
相关推荐
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
除了冒泡排序,代码还展示了其他两种经典的排序算法:选择排序和插入排序。 选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。...
冒泡排序和快速排序的时间性能 冒泡排序和快速排序是两种常用的排序算法,它们的时间性能是开发者和研究人员所关心的热点话题。在本文中,我们将对冒泡排序和快速排序的时间性能进行深入分析和比较。 冒泡排序是一...
在实际应用中,应根据数据特性选择合适的排序算法,例如,快速排序和二路归并排序在大多数情况下效率较高,而冒泡排序和直接插入排序则适用于小规模数据或部分有序数据。在学习这些算法时,不仅要关注代码实现,更要...
例如,直接插入排序和冒泡排序适合小规模数据,而快速排序和堆排序则适用于大规模数据。选择排序和希尔排序在某些特定条件下也能展现出较高的效率。在实际应用中,我们需要根据数据的特性、内存限制以及时间效率要求...
本资源包"选择排序 冒泡排序 插入排序 快速排序 堆排序.zip"聚焦于五种经典的排序算法,包括选择排序、冒泡排序、插入排序、快速排序以及堆排序。这些算法的实现语言是Objective-C,这是一种强大的面向对象的编程...
冒泡排序和选择排序适用于小规模数据;归并排序和堆排序在稳定性及处理大数据量上表现良好;插入排序和希尔排序在部分有序数据时有优势。理解并掌握这些排序算法,对于编程和算法设计能力的提升有着重要作用。
在本实验中,我们将探讨如何使用不同的排序算法,如冒泡排序、插入排序和快速排序,来对一个二维字符数组中的字符串进行字典顺序排序。首先,我们需要理解这些排序算法的基本原理。 **冒泡排序**是一种简单的排序...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
快速排序的优点在于其平均时间复杂度为O(n log n),在大多数情况下性能优于其他O(n^2)的排序算法,如冒泡排序和选择排序。然而,在最坏的情况下,当输入数组已经部分排序或完全排序时,快速排序的时间复杂度会退化为...
例如,对于大数据集,快速排序和归并排序通常更高效;而对于小数据集,简单的排序算法如插入排序或选择排序就足够了。在Java中,这些排序算法可以通过Collections.sort()方法或者自定义Comparator来实现,方便快捷。...
这里我们将深入探讨几种常见的排序算法:冒泡排序、插入排序、快速排序、双路快速排序、三路快速排序以及堆排序。 **1. 冒泡排序** 冒泡排序是最基础的排序算法之一,其工作原理类似于水底下的气泡逐渐上浮。通过...
选取一个“基准”元素,将数组分为小于基准和大于基准两部分,然后递归地对这两部分进行快速排序。 - C# 中,快速排序的关键在于“分区操作”,通过一次遍历将数组分为两部分,并返回基准元素的最终位置。 5. **堆...
根据提供的文件信息,我们可以深入探讨几种经典的排序算法:冒泡排序、直接插入排序、快速排序以及希尔排序。这些算法在数据结构与算法课程中是非常重要的基础内容,它们各自有着独特的特性和应用场景。 ### 1. ...
以上六种排序算法各有优缺点,如选择排序和冒泡排序时间复杂度较高,但实现简单;插入排序在部分有序的情况下效率较高;基数排序适用于处理大量整数排序;快速排序平均性能优秀,但最坏情况下时间复杂度较高;归并...
实验结果表明,直接插入排序算法和冒泡排序算法都可以正确地排序数组,但快速排序算法的性能远远超过它们。这是因为快速排序算法的时间复杂度只有 O(n log n),而直接插入排序算法和冒泡排序算法的时间复杂度都是 O...
冒泡排序和选择排序虽然实现简单,但效率较低,适合小规模数据;插入排序在部分有序的数据上表现优秀;希尔排序则在处理大型数据时有优势;而 `Arrays.sort()` 方法由于内部优化,通常在实际应用中能提供较好的性能...
根据提供的文件信息,我们可以深入分析并提取出有关冒泡排序、插入排序、快速排序和选择排序的C语言实现的关键知识点。 ### 冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素...
选择一个基准值,将数组分为两部分,一部分的所有元素都比基准值小,另一部分的所有元素都比基准值大,然后再对这两部分分别进行快速排序。快速排序的平均时间复杂度为O(nlogn),最坏情况下为O(n^2)。 **双路快速...
由于排序数量限制在100以内,这些算法在小规模数据上都能得到较好的表现,但随着数据规模的增大,效率较低的冒泡排序和选择排序的性能劣势会更加明显,而插入排序在部分情况下(如接近有序的数组)能表现出较高的...