D0404 数组排序(排序-选择排序)
/*
对给定的数组排序:
{5,1,6,4,2,8,9}
*/
class ArrayTest2
{
public static void main(String[] args)
{
int[] arr={3,1,5,2,7,4,9,6};
//排序前打印
// printArray(arr); //前面封装起来的函数
//排序
selectSort(arr);
//排序后打印
// printArray(arr);
}
/*
选择排序,就是一个嵌套循环
例如一个5个元素的数组
比较次数:
//**********
//*********
//**
//*
所以要写俩for循环
*/
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=0; //临时变量,都用temp来表示就行
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
}
D0405 数组(排序-冒泡排序)
/*
冒泡排序:
相邻的两个元素进行比较,如果符合条件就换位
以从小到大的冒泡排序为例,一次遍历以后,最大的值到了最后一位
第二次遍历,参与运算的元素就减一。
*/
public class ArrayTest3
{
public static void main(String[] args)
{
int[] arr=new int[]{3,1,4,6,2};
bubbleSort(arr);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+",");
}
}
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++) //数组如果有n个数:每循环一次,最值出现在最后位。还剩最后一个不需要了,所以需要进行n-1次操作。
{
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;
}
}
}
}
}
/*
发现无论什么排序,都需要对满足条件的元素进行位置置换。所以可以把这部分相同的代码提取出来,单独封装成一个函数。
*/
D0407 数组(-折半查找)
详见D0407.java
2018.6.4