c++冒泡排序代码

冒泡排序简单理解 冒泡排序 是 排序 中比较经典的一种算法。算法思想 简单可以理解为 元素 冒泡 至 指定位置(一般指末尾), 对于N个元素,需要进行N - 1 轮排序,即for(int i = a.length - 1 ;i>0;i--){...} , 每轮确定 一个 当前序列 的

冒泡排序简单理解


冒泡排序 是 排序 中比较经典的一种算法。算法思想 简单可以理解为 元素 冒泡 至 指定位置(一般指末尾),

  • 对于N个元素,需要进行N - 1 轮排序,即for(int i = a.length - 1 ;i>0;i--){...}

  • 每轮确定 一个 当前序列 的 最大值元素a[0 ~ i - 1],放到 当前序列的末尾a[i]

举栗,对于含有6个元素的 a[]

第一轮,从a[0] ~ a[5] 中 冒出 最大的 到 a[5],第一轮结束,a[5]确定

第二轮,从a[0] ~ a[4] 中 冒出 最大的 到 a[4],第二轮结束,a[4]确定

确定当前序列最大值元素 的方法:相邻位置的元素比较值大小,如果前面位置的元素 大于 后面位置的元素值,就 冒泡,交换值

一轮冒泡结束,最大元素到了 序列的末尾,

下轮冒泡的时候,就不用再 和 确定位置 的 元素比较

代码实现

  • Bubble工具类

package xiaosi.bili.one;

public class Bubble {
	

	/*
	 * sort()方法
	 */
	public static void sort(Comparable[] a)  {
		for(int i = a.length - 1;i > 0;i--) {
			for(int j = 0;j < i;j++) {
				if(gretter(a[j], a[j+1])) {
					exch(a, j, j + 1);
				}
				
				
			}
		}
	}
	/*
	 * greater()方法比较大小
	 */
	public static Boolean gretter(Comparable a, Comparable b) {
		//Compareable接口提供的compareTo()方法
		return a.compareTo(b) > 0;
	}
	/*
	 * exch()方法交换位置
	 */
	public static void  exch(Comparable[] a,int i, int j) {
		Comparable temp;
		temp = a[i];
		a[i] = a[j];
		a[j] = temp;
		
	}
}

  • TestBubbleSort测试类
package xiaosi.bili.one;

import java.util.Arrays;

public class TestBubbleSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//注意Compareable 是 比较对象类型,基本类型需要装箱
		Integer a[] = {6,5,9,7,1,3,6,9};
		Bubble.sort(a);
	
		System.out.println("冒泡排序后的:" + Arrays.toString(a));
		//冒泡排序后的:[1, 3, 5, 6, 6, 7, 9, 9]

	}

}

知秋君
上一篇 2024-09-02 09:48
下一篇 2024-09-02 09:12

相关推荐