数据源与打印方法
int[] nums = new int[]{14, 1, 2, 10, 3, 13, 11, 4, 12, 5, 6, 0, 7, 16, 8, 9, 15};
System.out.println(Arrays.toString(nums));
1. 冒泡算法
int[] nums = new int[]{14, 1, 2, 10, 3, 13, 11, 4, 12, 5, 6, 0, 7, 16, 8, 9, 15};
for(int i=0;i<nums.length-1;++i){
for(int j=i+1;j<nums.length;++j){
if(nums[i]>nums[j]){
int num=nums[j];
nums[j]=nums[i];
nums[i]=num;
}
}
}
System.out.println(Arrays.toString(nums));
2. 选择排序
int[] nums = new int[]{14, 1, 2, 10, 3, 13, 11, 4, 12, 5, 6, 0, 7, 16, 8, 9, 15};
for(int i=0;i<nums.length-1;++i){
int min=i;
for(int j=i+1;j<nums.length;++j){
if(nums[min]>nums[j]){
min=j;
}
}
int num=nums[i];
nums[i]=nums[min];
nums[min]=num;
}
System.out.println(Arrays.toString(nums));
3. 插入排序
for(int i=1;i<nums.length;++i){
if(nums[0]>nums[i]) {
System.out.println("打印当前数据 " + Arrays.toString(nums));
System.out.printf("目标i是最小的,吧i-1之前的所有数据右移一位\n", i - 1);
int num = nums[i];
for (int n = i; n > 0; --n) {
nums[n] = nums[n - 1];
}
nums[0] = num;
}else{
for(int j=0;j<i;++j){
if(nums[j]<nums[i] && nums[i]<=nums[j+1]){
System.out.println("打印当前数据 "+Arrays.toString(nums));
System.out.printf("从%d - %d位置开始移动\n",j+1,i);
int num=nums[i];
for(int n=i;n>j+1;--n){
nums[n]=nums[n-1];
}
nums[j+1]=num;
break;
}
}
}
}
|