冒泡排序:
public class Bubble {
/**
* @param args
*/
public static void main(String[] args) {
int[] a = { 77, 1, 65, 13, 81, 93, 10, 5, 23, 17 };
for (int m = a.length - 1; m > 0; m--) {
for (int n = 0; n < m; n++) {
if (a[n] > a[n + 1]) {
int temp = a[n];
a[n] = a[n + 1];
a[n + 1] = temp;
}
}
}
for (int i : a) {
System.out.println(i);
}
}
}
复杂度分析:冒泡排序是不稳定的排序算法,一共要比较((n-1)+(n-2)+...+3+2+1)=n*(n-1)/2次,所以时间复杂度是O(n^2)。
快速排序:
public class QuickSort {
/**
* @param args
*/
public static void main(String[] args) {
int[] initArray = { 1, 545, 23, 334, 876, 222, 111, 8, 9, 7, 6, 57, 89,
0, -23, 670 };
qsort(initArray, 0, initArray.length - 1);
outprint(initArray);
}
public static void outprint(int[] initArray) {
for (int i : initArray) {
System.out.println(i);
}
}
public static void swap(int[] array, int a, int b) {
System.out.println("a=" + a);
System.out.println("b=" + b);
int temp = array[b];
array[b] = array[a];
array[a] = temp;
}
public static int getPivotIndex(int[] array, int begin, int end) {
Random r = new Random();
return begin + r.nextInt(end - begin + 1);
}
public static void qsort(int[] array, int begin, int end) {
if (end > begin) {
int index = getPivotIndex(array, begin, end);
index = portions(array, begin, end, index);
qsort(array, begin, index - 1);
qsort(array, index + 1, end);
}
}
public static int portions(int[] array, int begin, int end, int index) {
int pivot = array[index];
swap(array, index, end);
for (int i = index = begin; i < end; i++) {
if (array[i] < pivot) {
swap(array, index++, i);
}
}
swap(array, index, end);
return index;
}
}
最坏情况是和冒泡一样,时间复杂度是O(n^2)
,最好为n*logn 。
插入排序:
public class InsertSort {
/**
* @param args
*/
public static void main(String[] args) {
int[] array = { 77, 1, 65, 13, 81, 93, 10, 5, 23, 17 };
isort(array, 0, array.length);
outprint(array);
}
public static void outprint(int[] initArray) {
for (int i : initArray) {
System.out.println(i);
}
}
public static void swap(int[] array, int a, int b) {
int temp = array[b];
array[b] = array[a];
array[a] = temp;
}
public static void isort(int[] array, int begin, int end) {
for (int i = begin; i < end; i++) {
int temp = array[i];
for (int m = i - 1; m >= 0; m--) {
if (temp < array[m]) {
array[m + 1] = array[m];
array[m] = temp;
} else {
break;
}
}
}
}
}
最好的情况是:顺序已经排好那么我们只要进行n-1次比较即可。
最坏的情况是:顺序恰好是逆序,比较1+2+...+n-1次。
平均时间复杂度也是O(n^2).
分享到:
相关推荐
在分析排序算法的时间效率时,我们通常会使用大O表示法,它提供了一个关于算法运行时间增长的上限估计。理论分析结合经验分析,例如通过计时测试,可以帮助我们更好地理解这些算法在不同输入条件下的性能表现。在...
综上所述,本文通过对几种典型排序算法及递归算法的时间复杂度进行分析,旨在帮助读者更好地理解这些算法的工作原理和性能特点。在实际应用中,根据具体情况选择合适的算法至关重要,以确保程序的高效运行。
在编程领域,数组排序是基础且重要的操作,尤其是在Java中。...总之,掌握各种排序算法及其复杂度是Java程序员的基础技能之一。通过深入学习和实践,我们可以更好地应对各种排序问题,提高程序的运行效率。
论文还提供了JAVA语言对二分查找排序法的实现代码,详细介绍了算法的描述和实现过程。通过对二分查找排序法的时间复杂度分析,论文得出了结论,即二分查找排序法的时间复杂度为O(logn)。这表明,二分查找排序法是一...
稳定性和时间复杂度是评估排序算法性能的两个关键指标。 【稳定排序算法】指的是在排序过程中,相等元素的相对顺序不会改变。例如,冒泡排序、插入排序、归并排序和基数排序都是稳定的。冒泡排序通过相邻元素的比较...
Java 排序算法概述 Java 排序算法是指在 Java 编程语言中使用的各种排序方法,旨在对数据进行有序排列。常见的排序算法有插入排序、交换排序、选择排序、归并排序、分配排序等。 插入排序是最基本的一种排序算法,...
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
Java排序算法大全是一份专为Java开发者准备的学习资源,涵盖了各种经典的排序算法,旨在帮助初学者和有经验的程序员深入理解排序的原理和实现。排序是计算机科学中的基础且重要的概念,它在数据处理、数据库操作、...
Java 排序算法详解 Java 排序算法是指在 Java 编程语言中使用的各种排序算法,旨在对数据进行排序和组织。这些算法可以分为五大类:插入排序、交换排序、选择排序、归并排序和分配排序。 插入排序 插入排序是一种...
Java 中实现排序算法通常涉及到多种方法,每种算法都有其特定的适用场景和性能特点。下面将详细介绍标题和描述中提到的一些常见排序算法,并提供Java实现。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...
例如,排序算法中,冒泡排序的时间复杂度为O(n^2),而快速排序的平均时间复杂度为O(nlogn)。在处理大量数据时,选择时间复杂度更低的算法能显著提升程序性能。 总之,"分析算法时间复杂度java.zip"文件中的内容将...
在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。本实验通过生成大量随机数并写入文件,然后使用四种不同的排序算法进行排序,以比较它们的效率。以下是对这四种排序算法的详细解释: 1. **冒泡...
Java 排序算法详解 Java 排序算法是 Java 编程语言中的一种常用算法,用于对数组或列表进行排序。排序算法的选择取决于数据的规模、类型和已有的顺序。 分类 Java 排序算法可以分为五类:插入排序、交换排序、...
根据提供的文件信息,我们可以总结出以下几个关键的排序算法知识点: ### 1. 插入排序 (Insertion Sort) 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后...
在编程领域,排序算法是数据结构与算法学习中的基础部分,尤其在Java中,了解和掌握各种排序算法对于提升程序性能至关重要。以下是对标题和描述中提到的Java各种排序算法的详细解释,以及它们的实现代码概述。 1)*...
以上介绍了Java排序算法中常见的几种方法及其变体。每种算法都有其特点和适用场景,例如当数据量较小时可以选择直接插入排序或直接选择排序;当数据量较大时,归并排序和快速排序则更为合适。理解这些算法的工作原理...
### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...
Java排序算法涉及了多种方法,用于组织数组或集合中的元素,使其按照特定顺序排列。以下是对这些算法的详细解释: 1. **冒泡排序(Bubble Sort)** 冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一...