选择排序
class Demo {
public static void main(String[] args) {
//需求:指定一个int类型的数组,给一定元素,将元素从小到大进行排序。
//初始化一个数组
int[] arr = {7,3,9,12,6,2};
//选择排序 : 效率太低比较的次数太多
for(int i = 0;i<arr.length;i++){
for(int j= 1 ; j<arr.length;j++){
if(arr[j-1]>arr[j]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
//遍历数组
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
冒泡排序
class Demo{
public static void main(String[] args) {
//需求:每次将数组中最大的元素把他移到最右边去
int[] arr = {7,3,9,12,6,2};
//将最大的值移到最右边
for(int i =0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1] = temp;
}
}
二分法
class Demo{
public static void main(String[] args) {
//二分法 : 前提 : 数组要排序好
int[] arr = {1,2,3,4,5,6};
int num = 5;
int max = arr.length-1;
int min = 0;
int mid = (max + min) / 2;
while(true){
if(num > arr[mid]){
min = mid +1;
}else if (num < arr[mid]) {
max = mid-1;
}else {
System.out.println("找到了:"+mid);
break;
}
//没有找到
if(min > max){
System.out.println("没有找到");
break;
}
//重新设置中间值
mid = (max + min)/2;
}
}
}
}