java学习 数组的排序 选择排序 冒泡排序

选择排序:

        可以将排序时数组元素分为有序区和无序区 有序区是我们排好序的部分,当然起初都是无序区。

选择排序是将无序区第一个元素与无序区其他元素依次比较,如果无序区第一个元素大于所比较的其他元素,则交换两者的数据。当遍历完成时,无序区第一个元素就排序完成了,此元素就划分到有序区,这是第一轮。

有n个元素需要进行n-1轮,每一轮需要进行n-1-(有序元素个数)    ----------这句可以不要看-----


public static void selectSort(int[] arr)
	{
		for(int x = 0;x<arr.length-1;x++)  		//从第一个元素开始,共进行arr.length-1轮,就是外层循环。
		{
			for(int y = x+1;y<arr.length;y++)       //内层循环比较是第一个无序元素从比较第二个无序元素开始
			{
				if(arr[x]>arr[y])               //如果第一个无序元素比所比元素大时,交换元素。
				{
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}
			}
		}
	}

冒泡排序:

         第一个与第二个元素比较,前面的元素大于后面的元素的话就两者交换;然后第二个元素与第三个元素比较,前面的元素大于后面的元素的话就两者交换;。。。第arr.length-1个元素(下标为arr.length-2)与最后一个元素比较,前面的元素大于后面的元素的话就两者交换。

遍历完一遍后,最后一个元素就是最大的元素,如其名,冒泡就是将最大的元素或最小的元素浮上来。那么第一轮后有一个有序的元素,第二轮有两个。。。

public static void bubbleSort(int[] arr)
	{
		for(int x = 0;x<arr.length-1;x++)            //每一轮遍历可以确定一个有序元素,所以外层循环需要arr.length-1轮
		{
			for(int y = 0;y<arr.length-1-x;y++)  //一轮遍历需要无序元素之间进行两两比较
			{
				if(arr[y] > arr[y+1])        //如果前面元素大于后面的元素就交换两者的数据
				{
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
	}

猜你喜欢

转载自blog.csdn.net/goddreamyyh/article/details/80296965
今日推荐