java中冒泡排序算法的详细解答以及程序 (java中冒号是什么意思)
本文目录导航:
java中冒泡排序算法的详细解答以及程序?
实例说明用冒泡排序方法对数组启动排序。
实例解析替换排序的基本思维是两两比拟待排序记载的关键字,发现两个记载的秩序雷同时即启动替换,直到没有反序的记载为止。
运行替换排序基本思维的重要排序方法有冒泡排序和极速排序。
冒泡排序将被排序的记载数组 R[1..n] 垂直陈列,每个记载 R[i] 看做是重量为 R[i] 的气泡。
依据轻气泡不能在重气泡之下的准则,从下往上扫描数组 R 。
凡扫描到违犯本准则的轻气泡,就使其向上“沉没”。
如此重复启动,直到最前任何两个气泡都是轻者在上,重者在下为止。
(1) 初始, R[1..n] 为无序区。
(2) 第一趟扫描,从无序区底部向上依次比拟相邻的两个气泡的重量,若发现轻者在下、重者在上,则替换二者的位置。
即依次比拟 (R[n],R[n-1]) 、 (R[n-1],R[n-2]) 、 … 、 (R[2],R[1]); 关于每对气泡 (R[j+1],R[j]), 若 R[j+1]<R[j], 则替换 R[j+1] 和 R[j] 的内容。
第一趟扫描终了时,“最轻”的气泡就飘浮到该区间的顶部,即关键字最小的记载被放在最洼位置 R[1] 上。
(3) 第二趟扫描,扫描 R[2..n]。
扫描终了时,“次轻”的气泡飘浮到 R[2] 的位置上 …… 最后,通过 n-1 趟扫描可获取有序区 R[1..n]。
留意:第 i 趟扫描时, R[1..i-1] 和 R[i..n] 区分为以后的有序区和无序区。
扫描仍是从无序区底部向上直至该区顶部。
扫描终了时,该区中最轻气泡沉没到顶部位置 R[i] 上,结果是 R[1..i] 变为新的有序区。
冒泡排序算法由于每一趟排序都使有序区参与了一个气泡,在通过 n-1 趟排序之后,有序区中就有 n-1 个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序环节至少须要启动 n-1 趟排序。
若在某一趟排序中未发现气泡位置的替换,则说明待排序的无序区中一切气泡均满足轻者在上,重者在下的准则,因此,冒泡排序环节可在此趟排序后中断。
为此,在上方给出的算法中,引入一个布尔量 exchange, 在每趟排序开局前,先将其置为 FALSE 。
若排序环节中出现了替换,则将其置为 TRUE 。
各趟排序完结时审核 exchange, 若不曾出现过替换则中断算法,不再启动下趟排序。
详细算法如下:void BubbleSort(SeqList R){//R(1..n) 是待排序的文件,驳回自下向上扫描,对 R 做冒泡排序int i,j;Boolean exchange; // 替换标记for(i=1;i<n;i++){ // 最多做 n-1 趟排序exchange=FALSE; // 本趟排序开局前,替换标记应为假for(j=n-1;j>=i;j--) // 对以后无序区 R[i..n] 自下向上扫描if(R[j+1]<R[j]){ // 替换记载R[0]=R[j+1]; //R[0] 不是哨兵,仅做暂存单元R[j+1]=R[j];R[j]=R[0];exchange=TRUE; // 出现了替换,故将替换标记置为真}if(!exchange) // 本趟排序未出现替换,提早中断算法return;} //endfor( 外循环 )}//BubbleSort
用java冒泡排序和递归算法
冒泡排序
(1)基本思维:在要排序的一组数中,对以后还未排好序的范畴内的所有数,自上而下对相邻的两个数依次启动比拟和调整,让较大的数往下沉,较小的往上冒。
即:每当两相邻的数比拟后发现它们的排序与排序要求雷同时,就将它们调换。
(2)用java成功
java冒泡排序详细解说
首先无论是哪种言语,各种排序的算法思维都是一样的。
冒泡排序的算法思维是:1、比拟相邻的元素。
假设第一个比第二个大,就替换他们两个。
2、对每一对相邻元素作雷同的上班,从开局第一对到开头的最后一对。
在这一点,最后的元素应该会是最大的数。
3、针对一切的元素重复以上的步骤,除了最后一个。
4、继续每次对越来越少的元素重复上方的步骤,直到没有任何一对数字须要比拟。
代码剖析:你的代码中外层第一次性循环首先将数组中的各个元素与temp[1]比拟,也就是数组中的第二个元素,内层循环中,每次循环都会判别,temp[1]与其余元素的大小。
假设有元素的值比temp[1]大,就讲他们你的值替换,经常使用替换后的值继续依次与未经比拟的值启动比拟,直到与一切的元素比拟完,这是第一趟排序。
第一趟排序中,外层循环只口头了一次性,内层循环每比拟一次性,循环一次性,所以内层循环口头了次。
第一趟排序找出了数组中最大的数,放在数组的最后一位置。
。
。
依此类推,第二趟排序找出第二大的数放在倒数第二的位置。
其后的每一次性循环以此类推。