冒泡排序

排序算法‘冒泡排序,选择排序,快速排序’

最后都变了- 提交于 2020-02-11 06:12:06
常用排序工具类: SortClass 的摘要说明。 对整形数组进行排序 可以重写每个排序算法支持多类型 注意:数组、对象,为传地址指针的形式 执行方法后会便改原始数组内容。 支持: 1、冒泡排序 2、选择排序 3、快速排序 using System;namespace 排序算法 { /**//// <summary> /// 排序模式 /// </summary> public enum SortTypeEnum { ASC, //正序 A-Z DESC //到序 Z-A } /**//// <summary> /// SortClass 的摘要说明。 /// 对整形数组进行排序 /// 可以重写每个排序算法支持多类型 /// 注意:数组、对象,为传地址指针的形式 /// 执行方法后会便改原始数组内容。 /// /// 支持: /// 1、冒泡排序 /// 2、选择排序 /// 3、快速排序 /// </summary> public class SortClass { private SortTypeEnum oSortType = SortTypeEnum.ASC; /**//// <summary> /// 构造 /// </summary> public SortClass(){;} /**//// <summary> /// 构造 /// </summary> ///

冒泡排序实现

大憨熊 提交于 2020-02-11 06:02:28
参考:http://www.cnblogs.com/kkun/archive/2011/11/23/2260280.html 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第一次两两比较6 > 2交换(内循环) 交换前状态| 6 | 2 | 4 | 1 | 5 | 9 | 交换后状态| 2 | 6 | 4 | 1 | 5 | 9 | 第二次两两比较,6 > 4交换 交换前状态| 2 | 6 | 4 | 1 | 5 | 9 | 交换后状态| 2 | 4 | 6 | 1 | 5 | 9 | 第三次两两比较,6 > 1交换 交换前状态| 2 | 4 | 6 | 1 | 5 | 9 | 交换后状态| 2 | 4 | 1 | 6 | 5 | 9 | 第四次两两比较,6 > 5交换 交换前状态| 2 | 4 | 1 | 6 | 5 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 | 第五次两两比较,6 < 9不交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 4 | 1 | 5

124.算法_冒泡排序

假装没事ソ 提交于 2020-02-11 04:34:03
冒泡排序 1 综述 冒泡排序是最常用的排序算法, 算法重复地走访过要排序的数列,一次比较两个元素, 如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交换慢慢“浮”到数列的顶端。 2 简介 2.1 流程 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。 在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 2.2 代码 //java冒泡排序的基础算法 import java.util.Arrays; public class Test { public static void main(String[] args) { int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5, 8 }; bubbleSort(values); System.out.println(Arrays.toString(values)); } public static void bubbleSort(int[] values) { int temp; for (int i = 0; i < values.length; i++) { for (int j = 0; j <

python笔记--冒泡排序升级版

邮差的信 提交于 2020-02-11 04:31:39
前言 面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信能难倒一批英雄好汉,本篇就详细讲解如何用python进行冒泡排序。 一、基本原理 1.概念: 冒泡排序(Bubble Sort),是一种计算机领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 2.算法原理: 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 二、交换两个数 1.如果a = 10 , b = 20如何交换两个数呢? 2.实现两个数的交换原理其实很简单,设一个临时变量c就可以了: 先把a的值传给c,此时c的值就是10了,a的值还是10 然后把b的值传给a,此时a的值是20,b的值还是20 最后把c的值传给b, 此时b的值是10 3.python里面交换两个数不用那么复杂,用这个方法就行了: a , b = b, a 三、遍历比较相邻的数 1

交换排序_冒泡排序

…衆ロ難τιáo~ 提交于 2020-02-11 04:24:09
  1. 算法的基本思想   冒泡排序是交换排序的一种。我们可以将数组中的元素想像成一个个气泡。数值大的元素气泡重量大。我们可以自上而下的扫描数组,遇到不符合规则的, 重气泡就往下沉。直到所有的气泡都是轻气泡在上,重气泡在下。这就完成了排序的任务。   2. 算法流程 一开始数组Array[0...n-1]是无序的,我们要对n个元素进行n-1次扫描。 第一次扫描,自上而下的扫描元素,遇到违反规则的两个气泡,就将重气泡下沉(也就是将这两个交换顺序)然后依次比较下去。最后得到的结果就是 最重的气泡被送到了最下面。 第二次扫描,扫描Array[0...n-2],然后次重的气泡就到了Array[n-2]的位置上。 重复上面的扫描,每次的扫描次数都比上一次要少1次。直到n-1次扫描结束,就是Array[0]和Array[1]进行比较结束。   3. 代码实现 1 #include <stdio.h> 2 #include <stdlib.h> 3 void BubbleSort(int *Array,int n){ 4 int a,i,j; //交换两个值的辅助变量 5 for(i=n-1;i>0;i--) //扫描n-1次 6 for(j=0;j<i;j++){ //从0到n-2,将小的元素交换到前面。 7 if(*(Array+j)>*(Array+j+1)){ 8 a=*(Array

java 冒泡排序 day003

与世无争的帅哥 提交于 2020-02-11 04:22:21
一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 三、实现思路: 用二重循环实现,外循环变量设为i,内循环变量设为j。假如有n个数需要进行排序,则外循环重复n-1次,内循环依次重复n-1,n-2,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,n-1,对于每一个i,j的值依次为0,1,2,...n-i 。 设数组长度为N: 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 3.N=N-1,如果N不为0就重复前面二步

冒泡排序

删除回忆录丶 提交于 2020-02-11 04:21:47
  冒泡 排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。   由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 View Code class Program { static void SimpleSort(int[] arry) { for (int i = 1; i < arry.Length; i++) { for (int j = 1; j <=arry.Length-i; j++) { if (arry[j - 1] > arry[j]) { int temp = arry[j - 1]; arry[j - 1] = arry[j]; arry[j] = temp; } } } } static

排序-冒泡排序

£可爱£侵袭症+ 提交于 2020-02-11 04:19:48
冒泡排序的基本思想是:每一次将最具有特征的一个数(或者object)放到序列的最前面,或者最后面。 也可以让相邻的两个数(对象)比较,重新排序后,再次重新比较,如果有结果(必出大小等)再次重新排列,否则进行下一次比较。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,..

冒泡排序

我只是一个虾纸丫 提交于 2020-02-11 04:14:20
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i。 举例: 1 static void Main(string[] args) 2 { 3 //冒泡排序,从小到大排列 4 int[] a = new int[10] { 9, 10, 5, 8, 7, 4, 3

Go语言实现冒泡和快速排序

房东的猫 提交于 2020-02-11 04:08:38
冒泡和快速排序都属于交换类排序,所谓交换排序是指借助数据元素之间互相交换进行排序的方法。 冒泡排序法 冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据的交换逐步将线性表变成有序。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。 在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的), 第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 参考: http://baike.baidu.com/view/254413.htm 图来自: http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html Go 语言实现 fund BubbleSort(values[]int){ flag:=true