冒泡排序-java实现

来源:互联网 发布:空空如也 汪峰 知乎 编辑:程序博客网 时间:2024/06/05 18:30

冒泡排序:

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

排序策略:

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();}}




1 0