java数组排序之冒泡排序

上一篇文章说了,选择排序。

选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推。

这一节当中我们来看下冒泡排序:

思路:

  1、首先拿第一个数字跟第二个比,如果第二个数字大于第一个数字,那么保持各自位置,否则交换位置,让数字更小的那一个在前面,数字较大的在后面。第一个跟第二个比较完之后,紧接着第二个跟第三个进行比较,比较的原则也是根据第一次比较的原则,这样比较下去一直到数组的结尾,我们得到的是这个数组中的最大值,并且这个最大值在数组的结尾处。也就是说最末尾的值我们现在已经确定了,我们接下来确定的就是次末尾的值。然后再想之前那样循环遍历比较,只是此时的长度减一。

代码:

class SelectSort
{
	
	public static void main(String[] args) 
	{
		
		int[] arr = {12,87,34,39,134,4,45,8,21233,99};

		printArr(arr);

		//selectSort(arr);
		maopaoSort(arr);

		printArr(arr);

	}

	public static void selectSort(int[]  arr){

		for(int i = 0; i<arr.length-1; i++)
		{

			for(int a = i + 1; a<=arr.length-1 ; a++)
			{
			/**
			*	if(arr[i]>arr[a])
			*	{
			*		int temp = arr[i];
			*		arr[i] = arr[a];
			*		arr[a] = temp;
			*	}
			*/
				if(arr[i]>arr[a])
					swap(arr,i,a);

			}

		}

	}

	public static void maopaoSort(int[] arr){

		for(int n = 0 ; n<arr.length-1 ; n++)
		{

			for(int i = 0 ; i < arr.length-1-n ; i++)
			{

				if(arr[i]>arr[i+1])
					swap(arr,i,i+1);

			}

		}


	}


	public static void printArr(int[] arr)
	{
		System.out.print("[");
		for(int i=0 ; i<arr.length ; i++){

			System.out.print(arr[i]);
			if(i<arr.length-1)
				System.out.print(",");

		}
		System.out.print("]");
		System.out.println();

	}

	public static void swap(int[]arr,int x, int y)
	{

		int temp;
		if(arr[x]>arr[y])
		{

			temp = arr[x];
			arr[x] = arr[y];
			arr[y] = temp;

		}

	}

}

  

原文地址:https://www.cnblogs.com/sunchuanzhen/p/3324023.html