个人理解,有问题请指出
冒泡排序 选择排序
public static class TestStringFormat {
public static void main(String[] args) {
int []arr= {3,2,8,4,7};//创建数组
System.out.println("排序前");
showArr(arr);//打印显示排序前
//循环实现冒泡排序 ---- 从下标0开始,依次前后比对。比对完成后再从下一位以此类推
// for(int i=0;i<arr.length-1;i++) {
// for(int j=0;j<arr.length-i-1;j++) {
// if(arr[j]>arr[j+1]) {
// int temp=arr[j];
// arr[j]=arr[j+1];
// arr[j+1]=temp;
// }
//
// }
// }
//选择排序 --- 从下标0开始,和数组内所有数做比较找到比当前更小的,有就替换没有就保持不边
// for(int i = 0; i < arr.length-1; i++){
// int min = i;
// for(int j = i+1; j <arr.length ;j++){
// if(arr[j]<arr[min]){
// min = j;
// }
// }
// int temp = arr[i];
// arr[i] = arr[min];
// arr[min] = temp;
// }
System.out.println("排序后");
showArr(arr);
}
//打印方法
private static void showArr(int []arr) {
//增强for循环打印
for(int a:arr) {
System.out.print(a+"\t");
}
System.out.println();
}
}
冒泡排序动画演示
![](https://img-blog.csdnimg.cn/img_convert/e3c130c1d7876db101068aa0226cd81b.gif)
选择排序动画演示
![](https://img-blog.csdnimg.cn/img_convert/74d539280692c029aec967a18006fcf7.gif)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
插入排序
public class InsertSort implements IArraySort {
// int []arr= {3,2,8,4,7};
@Override
public int[] sort(int[] sourceArray) throws Exception {
// 拷贝原数组内容与长度,不直接修改原始数组.以防数据丢失
int[] arr = Arrays.copy(sourceAarry,sourceArray.length);
// 从数组下标为1的地方开始,第0为默认为有序
for(int i=1;i<arr.length;i++;){
// 记录要做比对的数
int temp = arr[i];
//记录它的下标
int j = i;
while(j>0 && temp < arr[j -1]){
//把数组arr的第j-1位赋值给数组arr第j位.
arr[j] = arr[j-1];
j--;
}
//j不等于i进去
if(j != i){
// 把原本arr第j-1位小的数放进第j位
// 小的放到原来大的那位数的位置去,大的放到小的那个位置去
arr[j] = temp;
}
}
}
}
动画演示
![](https://img-blog.csdnimg.cn/img_convert/b4e64cdb37a2df813af98eacfbad1c81.gif)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
补充:在日常开发中排序中不只会出现long(长整型)这类型排序,会对更多的类型做排序.
数方法:在排序其他类型的数据时可以用上的方法。
compareTo() 方法
compareTo( NumberSubClass referenceName )
referenceName -- 可以是一个 Byte, Double, Integer, Float, Long 或 Short 类型的参数。
返回值
如果指定的数与参数相等返回 0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。
public class Test{
public static void main(String args[]){
Integer x = 5;
// 按字典顺序 1>2>3...
// 英文也是一样,26个字母的先后顺序 a>b>c>d
System.out.println(x.compareTo(3));
System.out.println(x.compareTo(5));
System.out.println(x.compareTo(8));
}
}
返回值
1
0
-1
学习记录