内排序:冒泡排序,选择排序,插入排序
冒泡排序:(相邻元素进行比较并交换)
步骤3:是对冒泡排序的优化!!!
//优化后的冒泡排序
public static int[] bubble(int[] arr){
int temp=0;
boolean flag=false;//优化冒泡排序
//外面的大排序:数组的长度减1
for (int i = 0; i < arr.length-1; i++) {
flag=false;
//内部的排序,每次都会将一个最大的数在最后
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
flag=true;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
//如果前面的这一趟没有排序,说明数组已经排完了
if(!flag){
break;
}
// System.out.println("第"+(i+1)+"次排序:"+Arrays.toString(arr));
}
return arr;
}
选择排序:(相邻元素比较找出最小的元素及其序号,与指定的位置进行交换)
//降序-选择排序
public static int[] select(int[] arr){
int min=arr[0];
int index=0;
for (int i = 0; i < arr.length-1; i++) {
min=arr[i];//找到每一趟的最小值和它的位置
index=i;
for(int j=i+1;j
插入排序:(待插入的数分割了原来的数组,插入数据之前的数都是排好序的)
待插入的数分割了原来的数组,插入数据之前的数都是排好序的,每一趟排序比较待插入的数据与它之前排好序的数,从后往前(排好序的数)一一比较,一旦待插入的数小于比较的数据,那么这个比较的数就往后移动一个位置(我们的目标是找到那个比待插入数还小的数,然后将待插入的数放置在它的后面)。极端情况,所有排好序的数都比待插入的数大,也就是说所有排好序的数都往后移动了一个位置,此时待插入的数据就放在了数组的arr[0]的位置.
public static int[] insert(int[] arr){
int insert=arr[1];
int index=0;
//默认的第一个数已经是有序数组的一员
for (int i = 1; i < arr.length; i++) {
insert=arr[i];
index=i;//这个序号之前的数已经排好序的
//可能出现前面的数全部比要插入的数大,也就是前面的数基本所有都往后移了个位置
boolean flag=false;
for (int j = index-1; j >=0; j--) {
if(insert 


