冒泡排序
冒泡排序算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
package com.algorithm; /** * 冒泡排序 * 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 * @author lenovo * */ public class BubbleSort { public static void sort(long[] attr){ long tmp=0; //从第0个元素开始循环,循环数组长次数 for (int i = 0; i < attr.length-1; i++) { //从最后一个元素开始,往前循环 for (int j = attr.length-1; j >i; j--) { //如果最后一个元素比前一个小,将最后一个向上排一次 //一直将最小的排到最前面 if (attr[j]<attr[j-1]) { //交换数据 tmp=attr[j]; attr[j]=attr[j-1]; attr[j-1]=tmp; } } } } public static void main(String[] args) { long[] attr = new long[5]; attr[0]=34; attr[1]=23; attr[2]=2; attr[3]=55; attr[4]=1; System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); sort(attr); System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); } }
选择排序
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
package com.algorithm; /** * 选择排序 * @author lenovo *每一趟从待排序的数据元素中选出最小(或最大)的一个元素, *顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 */ public class SelectionSort { public static void sort(long[] attr){ //假设第0个元素是最小的 int k=0; long temp =0; for (int i = 0; i < attr.length-1; i++) { k=i; //通过循环,K指向的是最小的元素 for (int j = i; j < attr.length; j++) { if (attr[j]<attr[k]) { //K永远指向最小的元素 k=j; } } //交换数据,每次都要交换,如果当前元素就是最小的,那么也要交换数据,只不过交换了无效 temp=attr[i]; attr[i]=attr[k]; attr[k]=temp; } } public static void main(String[] args) { long[] attr = new long[5]; attr[0]=34; attr[1]=23; attr[2]=2; attr[3]=55; attr[4]=1; System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); sort(attr); System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); } }
插入排序
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置
package com.algorithm; /** * 插入排序 * @author lenovo *插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据, *算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分: *第一部分包含了这个数组的所有元素,但将最后一个元素除外, *而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置 */ public class InsertSort { public static void sort(long[] attr) { long temp = 0; //从第2个位置开始插入 for (int i = 1; i < attr.length; i++) { temp =attr[i]; int j=i; while (j>0&&attr[j]>=temp) { attr[j]=attr[j-1]; j--; } //插入点 attr[j]=temp; } } public static void main(String[] args) { long[] attr = new long[5]; attr[0]=34; attr[1]=23; attr[2]=2; attr[3]=55; attr[4]=1; System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); sort(attr); System.out.print("{"); for (int i = 0; i < attr.length; i++) { System.out.print(attr[i]+" "); } System.out.println("}\n"); } }
相关推荐
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
交换排序 选择排序 冒泡排序 插入排序
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
冒泡排序、选择排序和插入排序是三种基本的排序算法,它们都是在计算机科学中用于组织数据的关键技术。这些算法的实现通常用作教学示例,帮助初学者理解排序过程和时间复杂性。 **冒泡排序(Bubble Sort)**: 冒泡...
在本文中,我们将深入探讨四种经典的排序算法:插入排序、选择排序、基数排序和冒泡排序,以及它们在C++语言中的实现。 **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理类似于我们...
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
以下是关于"冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序"这七种常见排序算法的源码实现及相关知识点的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的...
总的来说,这段代码提供了四种排序算法的实现,分别是冒泡排序、选择排序、插入排序以及Java内置的数组排序。每种排序算法都有其适用场景,理解这些算法可以帮助我们更好地解决实际问题,并根据需求选择合适的排序...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...
本文将详细讨论三种基础的排序算法:选择排序、插入排序和冒泡排序。这些算法虽然简单,但在理解计算机如何执行排序操作方面起着至关重要的作用。 首先,我们来看**选择排序**(Selection Sort)。它的工作原理是...
有一个模板类写出了快速排序,冒泡排序,插入排序,选择排序四种算法。用的是C++哦
本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
根据提供的文件信息,我们可以深入探讨几种经典的排序算法:冒泡排序、直接插入排序、快速排序以及希尔排序。这些算法在数据结构与算法课程中是非常重要的基础内容,它们各自有着独特的特性和应用场景。 ### 1. ...
根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....