1,冒泡的使用:
```
int [] arr={12,2,3,78,64,5};
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1]l;
arr[j+1]=temp;
}
}
}
```
冒泡的排序规则是,每一轮都会找到相对于最大的值进行排序,如上数组,循环数据如下:
j=0:2,12,3,78,64,5
j=1:2,3,12,78,64,5
j=2:2,3,12,78,64,5
j=3:2,3,12,64,78,5
j=4:2,3,12,64,5,78
根据如上的排序最终得到i=0;时,得到结果:2,3,12,64,5,78
j=0:2,3,12,64,5,78
j=1:2,3,12,64,5,78
j=2:2,3,12,64,5,78
j=3:2,3,12,5,64,78
i=1时,得到结果:2,3,12,5,64,78
j=0:2,3,12,5,64,78
j=1:2,3,12,5,64,78
j=2:2,3,5,12,64,78
i=2时,得到结果:2,3,5,12,64,78
j=0:2,3,5,12,64,78
j=1:2,3,5,12,64,78
i=3时,得到结果:2,3,5,12,64,78
j=0:2,3,5,12,64,78
i=4时,得到结果:2,3,5,12,64,78
根据如上结果,发现当i=2时,排序已经完成了,但仍旧多余对比排序了三次,这就涉及到了,更加高效的数据排序算法,后续添加优化后的冒泡排序.
2,选择排序的实现:
int [] arr={12,2,65,23,78,1};
```
int temp=0;
for(int i=0;i<arr.length-1;i++){
for(int j=i;j<arr.length-1;j++){
if(arr[i]>arr[j+1]){
temp=arr[i];
arr[i]=arr[j+1];
arr[j+1]=temp;
}
}
}
```
相较于冒泡的排序,选择排序则是每次找到数组中最小的值进行排序,根据如上数组,排序数据结果如下:
i=0时:排序得到的结果集:1,12,65,23,78,2
j=0: 2,12,65,23,78,1
j=1:2,12,65,23,78,1
j=2:2,12,65,23,78,1
j=3:2,12,65,23,78,1
j=4:1,12,65,23,78,2
i=1时:排序得到的结果集:1,2,65,23,78,12
j=1:1,12,65,23,78,2
j=2:1,12,65,23,78,2
j=3:1,12,65,23,78,2
j=4:1,2,65,23,78,12
i=2时:排序得的的结果集:1,2,12,65,78,23
j=2:1,2,23,65,78,12
j=3:1,2,23,65,78,12
j=4:1,2,12,65,78,23
i=3时:排序得到的结果集:1,2,12,23,78,65
j=3:1,2,12,65,78,23
j=4:1,2,12,23,78,65
i-4时:排序得到的结果集:1,2,12,23,65,78
j=4:1,2,12,23,65,78
这就是最常见的选择排序了,可以满足常用的简单数据的排序,但如果需要高性能的,则需要进一步的优化.