三九宝宝网宝宝百科宝宝知识

双向冒泡排序算法怎么写

03月04日 编辑 39baobao.com

[C语言实现以及冒泡排序]汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然...+阅读

void BubbleSort_(int a[],int n) { int tmp; int i=0; int j=0; for(;i+ja[i_+1]) { tmp=a[i_+1]; a[i_+1]=a[i_]; a[i_]=tmp; } } for(int j_=n-i;j_>j+1;j_--) { if(a[j_]

c双向冒泡排序

class SortManager { private int[] a; private int start; private int end;

public void Sort(int[] a) { this.a = a; start = 0; end = a.Length - 1;

int minIndex = 0; int maxIndex = 0;

while (Result(ref minIndex, ref maxIndex)) { Move(minIndex, maxIndex);

start++; end--; } }

private bool Result(ref int minIndex, ref int maxIndex) { if (start <= end) { int min = a[start]; int max = a[start]; minIndex = maxIndex = start;

for (int i = start + 1; i <= end; i++) { if (min > a[i]) { min = a[i]; minIndex = i; } else { if (max < a[i]) { max = a[i]; maxIndex = i; } } }

return true; } else { return false; } }

private void Move(int minIndex, int maxIndex) { int temp = a[start]; a[start] = a[minIndex]; a[minIndex] = temp;

temp = a[end]; a[end] = a[maxIndex]; a[maxIndex] = temp; } }

static void Sort(int[] a) { int start = 0; int end = a.Length - 1; int minIndex, maxIndex; int temp;

for (; start < end; start++, end--) { minIndex = maxIndex = start;

for (int j = start + 1; j <= end; j++) { if (a[minIndex] > a[j]) { minIndex = j; } else { if (a[maxIndex] < a[j]) { maxIndex = j; } } }

if (minIndex != maxIndex) { if (maxIndex == start) { if (minIndex == end && maxIndex == start) { temp = a[start]; a[start] = a[end]; a[end] = temp; } else { temp = a[end]; a[end] = a[maxIndex]; a[maxIndex] = temp;

temp = a[start]; a[start] = a[minIndex]; a[minIndex] = temp; } } else { temp = a[start]; a[start] = a[minIndex]; a[minIndex] = temp;

temp = a[end]; a[end] = a[maxIndex]; a[maxIndex] = temp; } } } }

冒泡法和选择法排序的思想

冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元素就浮到了最高位置;处理二遍之后,"次轻"的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是"最轻"元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。而选择排序算法的改进在于:先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置。

所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。

其实看你声明的变量的个数就知道了。选择的要比冒泡的多声明一个,用来存储最小(或最大的)元素的下标。而冒泡的比较后直接换。

C冒泡排序的基本思想和步骤

冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将大数放前,小数放后,一直比较到最小数前的一对相邻数,将大数放前,小数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。排序过程 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。

算法示例 49 13 13 13 13 13 13 13 38 49 27 27 27 27 27 27 65 38 49 38 38 38 38 38 97 65 38 49 49 49 49 49 76 97 65 49 49 49 49 49 13 76 97 65 65 65 65 65 27 27 76 97 76 76 76 76 49 49 49 76 97 97 97 97 Procedure BubbleSort(Var R : FileType) //从下往上扫描的起泡排序// Begin For I := 1 To N-1 Do //做N-1趟排序// begin NoSwap := True; //置未排序的标志// For J := N - 1 DownTo 1 Do //从底部往上扫描// begin If R[J+1]

以下为关联文档:

汉诺塔的C语言实现以及冒泡排序汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然...

算法回顾之插入排序使用范围:小规模数据的排序的方案,而且是一种稳定的排序。 算法复杂度:O(n2) 思想: 首先我们来想一个问题,我们是否能找到一种方法,使一个数插入到一个有序的数组当中,并保证它依然有...

c如何进行冒泡排序/**************************************************/ /* 函数功能:冒泡排序算法 */ /* 函数参数:结构类型table的指针变量tab */ /* 函数返回值:空 */ /* 文件名:bubbsort.cp...

冒泡算法升序排序数组中随机生成的10个数public class MaoPiao { /** * 冒泡算法,升序排序数组中随机生成的10个数 */ public static void main(String[] args) { Random rd = new Random(); int a[] = new int[10];...

冒泡排序法将下面数组中的数进行排序并将排序后的结果输出到屏public class Test { public static void main(String args[]) { int[] arr={5,2,0,13,14}; Bubble bubble=new Bubble(); bubble.sort(arr); } } class Bubble { int temp;...

冒泡排序法详解冒泡排序:BubbleSort 基本概念 冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3...

用程序流程图表示快速排序和冒泡排序什么意思?怎么写啊冒泡排序思想 :每次前后两个比较,前面大就交换这两个,一直到最后这是一趟,需要n趟(小到大排序) 例如:4 2 7 1 8 对这几个数冒泡排序 2 4 7 1 8 第一趟第一次交换2 4 2 4 7 1 8 第一...

谁能讲一下冒泡排序原理谁能讲一下冒泡排序原理,举例说明冒泡排序法基本原理:冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前...

冒泡法排序是怎么回事冒泡法排序是怎么回事,什么是冒泡排列:5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列, 从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5...

推荐阅读
图文推荐