冒泡排序:两个相邻的数据两两相比,如果是从小到大排列,将较大的数据换位到较小数后面,这样第一轮结束,最后一个数据是最大的数据,因为总是把较大的数据换到后面,再进行第二轮,第三轮(此时已经排好序的数据可以不再参与排序,提高效率)......当第二个数据确定时,第一个数据也就确定了,排序结束。大圈套小圈思想,外层循环控制次数,内层循环控制比较的数据。
选择排序和冒泡会用到数据的位置交换,所以为了提高代码复用性,我们先写一段数据位置交换的代码:
public static void swap (int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
以下是冒泡排序;
public static void chooseMaoPao(int [] arr){
for (int x=0;x<arr.length-1 ;x++ ) { //这里 -1 是当第二个数据确定,第一个数据也确定了,可以少比较一次
for (int y=0;y<arr.length-1-x;y++ ) { //这里 -x 是已经排过序的数据可以不再参与排序,提高效率,虽然不-x也是可以的
if (arr[y]>arr[y+1]) { //判断两个数据的大小(将较大数换到后面)
swap(arr,y,y+1); //调用swap方法完成两个数据交换位置