冒泡排序,如下:
public class BubbleSort
{
public static void main(String[] args)
{
int[] array = new int[]{29, 23, 56, 40, 12, 63, 89, 7, 96, 38};
System.out.println("Before sort:");
Display(array);
Sort(array);
System.out.println("After sort:");
Display(array);
}
public static void Sort(int[] array)
{
int temp = 0;
for(int i=array.length-1; i>0; i--)
{
for(int j=0; j<i;j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static void Display(int[] array)
{
for(int i=0; i<array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
}
//*****************
//时间复杂度为:O(N*N)
//需要比较的次数:N*(N-1)/2
//需要交换的次数:N*(N-1)/2
//*****************
/**
Before sort:
29 23 56 40 12 63 89 7 96 38
After sort:
7 12 23 29 38 40 56 63 89 96
*/
选择排序,如下:
public class SelectSort
{
public static void main(String[] args)
{
int[] array = new int[]{29, 23, 56, 40, 12, 63, 89, 7, 96, 38};
System.out.println("Before sort:");
Display(array);
Sort(array);
System.out.println("After sort:");
Display(array);
}
public static void Sort(int[] array)
{
int min = 0;
int temp = 0;
for(int i=0; i<array.length-1; i++)
{
min = i;
for(int j=i+1; j<array.length; j++)
{
if(array[j] < array[min])
min = j;
}
temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
public static void Display(int[] array)
{
for(int i=0; i<array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
}
//*****************
//时间复杂度为:O(N*N)
//需要比较的次数:N*(N-1)/2
//需要交换的次数:N-1
//*****************
/**
Before sort:
29 23 56 40 12 63 89 7 96 38
After sort:
7 12 23 29 38 40 56 63 89 96
*/
插入排序,如下:
public class InsertSort
{
public static void main(String[] args)
{
int[] array = new int[]{29, 23, 56, 40, 12, 63, 89, 7, 96, 38};
System.out.println("Before sort:");
Display(array);
Sort(array);
System.out.println("After sort:");
Display(array);
}
public static void Sort(int[] array)
{
int index = 0;
int temp = 0;
for(int i=1; i<array.length; i++)
{
index = i;
temp = array[i];
while(index > 0 && array[index-1] > temp)
{
array[index] = array[index-1];
index--;
}
array[index] = temp;
}
}
public static void Display(int[] array)
{
for(int i=0; i<array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
}
//*****************
//时间复杂度为:O(N*N)
//需要比较的次数:N*(N-1)/4
//需要交换的次数:N-1
//*****************
/**
Before sort:
29 23 56 40 12 63 89 7 96 38
After sort:
7 12 23 29 38 40 56 63 89 96
*/
小结一下:
冒泡排序、选择排序、插入排序的时间复杂度为:O(N*N),且都是稳定的。
选择排序的比较次数与冒泡排序的比较次数一样,都为:N*(N-1)/2,但交换次数比其少的多(N-1次和N*(N-1)/2次)。
插入排序的比较次数比冒泡排序快一倍,比选择排序略快。
总之,相对来说,插入排序较快。
分享到:
相关推荐
对数字6606 5241 4215 5164 6224 3781 6536 4105 2587 2548 4641 2899 8124 6624 1042 5669 471 8165 9308 6514 7708 13 4697 4110 5899 2831 3024 957 2454等进行冒泡选择插入排序
本篇文章将深入探讨并详细解析三种基本的排序算法:冒泡排序、插入排序以及选择排序,这三种算法均使用C语言实现。 ### 冒泡排序 冒泡排序是一种简单的比较排序算法,其基本思想是重复地走访过要排序的数列,一次...
第27周-第02章节-Python3.5-冒泡 选择 插入排序.avi
交换排序 选择排序 冒泡排序 插入排序
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
采用c++描述了各种排序算法,包括选择排序 冒泡排序 插入排序 基数排序 快速排序 归并排序 。实验内容 1、创建排序类。 2、提供操作:选择排序、冒泡排序、插入排序、*基数排序、*快速排序、*归并排序。 3、*能够...
冒泡排序、选择排序和插入排序是三种基本的排序算法,它们都是在计算机科学中用于组织数据的关键技术。这些算法的实现通常用作教学示例,帮助初学者理解排序过程和时间复杂性。 **冒泡排序(Bubble Sort)**: 冒泡...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
以下是关于"冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序"这七种常见排序算法的源码实现及相关知识点的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的...
本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...
有一个模板类写出了快速排序,冒泡排序,插入排序,选择排序四种算法。用的是C++哦
在本文中,我们将深入探讨四种经典的排序算法:插入排序、选择排序、基数排序和冒泡排序,以及它们在C++语言中的实现。 **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理类似于我们...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...
本文将深入探讨C#中常见的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序,以及它们的实现细节和应用场合。 首先,我们来看**冒泡排序**。冒泡排序是一种简单的交换排序方法,它通过不断比较相邻元素并交换...
本资源包"选择排序 冒泡排序 插入排序 快速排序 堆排序.zip"聚焦于五种经典的排序算法,包括选择排序、冒泡排序、插入排序、快速排序以及堆排序。这些算法的实现语言是Objective-C,这是一种强大的面向对象的编程...