冒泡排序-java实现

冒泡排序:

重复地比较相邻的元素,且在它们不符合顺序时将它们互换,从而完成对某一个列表的排序。

排序策略:

1.扫描列表且比较相邻两个元素,如果不是按要求的顺序排列则将它们互换,这样就把最大值“冒泡”到最后一个位置,这个位置就是该值在列表中的最终排序好的位置;
2.再次扫描列表,冒泡到倒数第二个位置;
3.再次扫描列表,冒泡倒数第3,4,...n个位置直到列表排序完成。


例子:

初始:2  8  5  1  3

step1:2  5  1  3  8(将8冒泡到最终位置)
step2:2  1  3  5  8(将5冒泡到最终位置)
step3:1  2  3  5  8(将3冒泡到最终位置)
step4:1  2  3  5  8(将2冒泡到最终位置)
step5:1  2  3  5  8(将1冒泡到最终位置)
最终:1  2  3  5  8

Code:

/*
*Created on 2016年7月10日
*Copyright 2016 Yong Cai Limited crop. All Rights Reserved
*
*/

package org.cy.sort;

public class BubbleSort {

	public static void main(String[] args) {
		String[] str = {"nba","haha","school","cs","aha"};
		printArr(bubbleSort(str));
	}
	
	public static <T extends Comparable<? super T>> T[] bubbleSort(T[] data){
		int len = data.length;
		T tmp;
		for(int pos = 0; pos < len; pos++){
			for(int scan = 0; scan < len - pos - 1; scan++){
				if(data[scan].compareTo(data[scan + 1]) > 0){
					tmp = data[scan];
					data[scan] = data[scan + 1];
					data[scan + 1] = tmp;
				}
			}
		}
		return data;
	}
	
	public static <T> void printArr(T[] data){
		int len = data.length;
		for(int i = 0; i < len; i++){
			System.out.print(data[i] + " ");
		}
		System.out.println();
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值