day04数组


/*数组
概念:同一种类型数据的集合。其实数组就是个容器。
格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度]
int [] a = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,元素···}
int [] a = new int[];{3,5,7,8};
数组内存结构: 栈内存,堆内存
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放
堆内存:
数组和对象,通过new建立的实例都存放在堆内存;
每一个实体都有内存地址值 ;
每一个变量都有默认初始化值 ;
实体不在被使用,会在不确定的时间内被垃圾回收器回收;
*/
public class day04_4 {
public static void main(String[] args)
{
int[] arr = {2,8,12,7,5,14};
//排序前打印数组
printArray(arr);
//进行选择排序
selectSort(arr);
//排序后打印
printArray(arr);
//进行冒泡排序
bubbleSort(arr);
printArray(arr);
}
//排序数组,从小到大
//选择排序。最值出现在头角标位置
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; */
swap(arr,x,y);
}
}
}
//冒泡排序:相邻的两个元素进行比较,如果符合条件换位。
//第一圈:最值出现了最后位
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++) //-x:让每一次比较的元素减少;-1:避免角标越界。
{
if (arr[y]>arr[y+1])
{
/* int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp; */
swap(arr,y,y+1);
}
}
}
}
//用于打印数组
private static void printArray(int[] arr)
{
for (int x=0;x {
if (x!= arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]);
}
}
/*发现无论什么排序,都需要对满足条件的元素进行位置置换。
所以可以把这部分相同的代码提取出来,单独封装成一个函数。
*/
private static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] =arr[b];
arr[b] = temp;
}
}