特点: 两两相邻比较
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
for(int i = 0; i < arr.length; i++){ // 升序
for(int j = 0; j < arr.length - i -1; j++ ){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
特点:查找出最小值记录其下标,一次循环之后,将其与前面的元素交换值;
int k = 0,min;
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
for(int i = 0; i < arr.length - 1; i++){
min = arr[i];
for(int j = i + 1; j < arr.length; j++ ){
if(min > arr[j]){
k = j;
min = arr[j];
}
}
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
特点:将后面的数与前面的数比较大小并转换值;
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
for(int i = 1; i < arr.length - 1; i++){
for(int j = 0; j < i; j++ ){
if(arr[i] < arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
前提:在已排序的数组中进行查找
特点:从中间开始对数组进行查找,如果N小于中间数,则对左半部分进行查找,如果N大于中间数,则对右半部分进行查找直到找到元素
int n = (int) (Math.random() * 20 + 1); // 1-100的随机数
boolean b = false;
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3};
Arrays.sort(arr); // 先对数组进行排序
int first = 0,last = arr.length - 1,mid = arr.length / 2;
while(first <= last){
if(n == arr[mid]){
b = true;
break;
}else if(n > arr[mid]){
first = mid + 1;
}else if(n < arr[mid]){
last = mid - 1;
}
mid = (first + last) / 2;
}
if(b){
System.out.print("查找成功!\n数组的下标为: " + mid );
}else{
System.out.print("查找失败!");
}
可使用: java.util.Arrays类中的BinarySearch方法 Arrays.binarySearch(arr,n); // 返回数组下标