冒泡排序及java实现

冒泡排序思想

默认采用数组作为数据存储结构

如果是升序的话,就是先两两比较得到最大的数并放在末尾,然后从头循环比较得到第二大的数放到倒数第二个位置,依次循环执行,直到只剩下第一个数和第二个数进行依次比较后,便得到有序数组。

算法复杂度

如果数组中有N个数据项,那么第一次排序找到最大的数需要比较N-1次,第二次找到第二大的数需要比较N-2次,依次类推,得到总共需要比较:(N-1)+(N-2)+...+1=N*(N-1)/2。

而对于是否需要交换来说,在考虑随机分布的情况下,大概只需要交换比较次数的一半次,也就是N*(N-1)/4。

由于常数不算在大O表示法中,因此该算法的时间复杂度为O(N^2)。

一般来说,出现一个循环嵌套在另一个循环的情况,基本上复杂度都是O(N^2)。

java实现

import java.util.ArrayList;
public class BubbleSort {
	
	public static void main(String[] args) {
		int[] a = {5,4,3,2,1,4,3,5,7,5,6,8,9};
		a = arraySort(a);
		ArrayList<String> sortnum = new ArrayList<>();
		for(int num:a){
			sortnum.add(num+"");
		}
		System.out.println(sortnum);
	}
	//升序
	public static int[] arraySort(int[] arr){
		
		for(int i=arr.length-1;i>0;i--){
			for(int j=0;j<i;j++){
				if(arr[j]>arr[j+1]){
					int temp;
					temp = arr[j+1];
					arr[j+1] = arr[j];
					arr[j] = temp;
				}
			}
		}
		return arr;
	}
}


猜你喜欢

转载自blog.csdn.net/asn_forever/article/details/80875337