选择排序和冒泡排序
1.值传递:
八大基本类型+String都是值传递
2.引用传递:
其他的引用类型都是引用传递
(一)冒泡排序:
原数据:{3,14,-3,2,7,1}
内循环做的事情是将大的数往后移:
for(int j=0;j<5;j++){ if(arr[j]>arr[j+1]){ int temp =arr[j]; arr[j] = arr[j+1]; arr[j+1] =temp; } }
第一轮:3,14,-3,2,7,1
①3,14,-3,2,7,1
②3,-3,14,2,7,1
③3,-3,2,14,7,1
④3,-3,2,7,14,1
⑤3,-3,2,7,1,14
第二轮:3,-3,2,7,1
①-3,3,2,7,1
②-3,2,3,7,1
③-3,2,3,7,1
④-3,2,3,1,7---------------3,2,3,1,7,14
第三轮:-3,2,3,1
①.-3,2,3,1
②.-3,2,3,1
③.-3.2.1.3-----------~~ -3,2,1,3,7,14
第四轮:-3,2,1
①-3,2,1
②-3,1,2 ----------~~-3,1,2,3,7,14
第五轮:-3,1
①-3,1----------------~~-3,1,2,3,7,14
所以冒泡排序法如下:
for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(arr[j]>arr[j+1]){ int temp =arr[j]; arr[j] = arr[j+1]; arr[j+1] =temp; } } }
(二)选择排序:
int[] arr = {14,2,11,3,8}; for(int k =0;k<arr.length-1;k++){ int min = k; for(int i=k+1;i<arr.length;i++){ if(arr[min]>arr[i]){ min = i; } }//这个循环做完之后,min的值才是最小的元素的下标 if(min != k){ int temp = arr[min]; arr[min] = arr[k]; arr[k] = temp; } }