您的位置:首页 > 理论基础 > 数据结构算法

数据结构复习之–“冒泡排序”-JAVA实现

2017-09-02 09:46 274 查看
冒泡排序Java完整代码如下,写的不好,仅供参考,勿喷!

import java.util.Scanner;
/**
* 数据结构复习之“冒泡排序”练习程序
* @author DL
* 时间复杂度:O(n^2)
*/
public class BubbleSortTest {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
//首先得到要输入数据的个数
int totalNums = sc.nextInt();
//从控制台输入数据到数组中
int[] inputData = new int[totalNums];
for (int i = 0; i <totalNums; i++) {
inputData[i] = sc.nextInt();
}
show(inputData);
BubbleSort(inputData);//进行冒泡排序
show(inputData);

}

/**
* function:显示整数数组中的数据
* @param array 待显示数组
*/
static void show(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println("\n");
}

/**
* function: 使用冒泡排序算法排序整形数组中的数据,升序
* @param array 待排序整形数组
*/
static void BubbleSort(int[] array) {
int tempVar;//临时变量,用于交换数据

//标志位,用于跳出多重循环,表示的是上次冒泡过程中是否改变数据顺序,
//若上次冒泡没有改变顺序,则表示数组已经排好序,后续的冒泡过程可省略,加快排序速度
boolean isChangeOrder=true;

if (null == array || 1 == array.length)
return;
else {
//包含n个数据,只需n-1次冒泡过程
for (int i = 0; i < array.length-1 && isChangeOrder; i++) {
isChangeOrder=false;
//每次冒泡的过程都比上次少比较一个元素
for (int j = 1; j < array.length - i; j++) {
if (array[j - 1] > array[j]) {
//每次冒泡过程中交换顺序
tempVar = array[j - 1];
array[j - 1] = array[j];
array[j] = tempVar;
isChangeOrder=true;
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息