//给指定数进行排序 选择比较
//{5,1,6,4,2,8,9}
/**排序思想:
* 0 1 2 3 4 5 下角标
* 3 1 4 2 7 5 数组元素
* 使用嵌套循环
* 内循环结束一次 最止出现在头角标位置上
* */
import java.util.*;
public class ArrayTest2{
public static void selectSort(int[] arr)
{
//核心代码
for(int x=0 ;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
/**冒泡排序法排序
* 相邻的两个元素进行比较一直向后走 如果符合条件换位
* 第一轮比较完了 最大的数肯定是在最后 相应的大数向后去
* 在下一轮时 长度在依次递减 增加一圈少个元素
*
* */
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if(arr[y+1]<arr[y]);//-x:让每一次比较的元素逐级减少 -1:避免角标越界
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
//可以直接用下面定义的swap
}
}
}
}
public static void main(String[] args)
{
int[] arr1 = {7,6,4,2,8,9};
printArray(arr1);
selectSort(arr1);
printArray(arr1);
bubbleSort(arr1);
printArray(arr1);
Arrays.sort(arr1);//真实开发下用的 直接用就行 可直接对数组进行排序
printArray(arr1);
}
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println("]");
}
}
/*发现无论什么排序 都需要对满足条件的元素进行位置转换
* 所以可以把这部分相同的代码提取出来 单独封装成一个函数
* */
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}