韩顺平 java笔记 第17讲 第18讲 排序 查找
1.排序分类
(1)内部排序
交换式排序 选择式排序 (选择排序法、堆排序法)插入式排序
(2)外部排序
合并排序 直接合并排序法
2.交换式排序
(1)冒泡排序
79 56 90 4 32 27 16 88 35
90 79 56 88 4 32 27 16 35
90 88 79 56 35 4 32 27 16
90 88 79 56 35 32 4 27 16
90 88 79 56 35 32 27 4 16
90 88 79 56 35 32 27 16 4
90 88 79 56 35 32 27 16 4
public class Demo{
public static void main(String[] args){
int arr[] = {1,6,0,-1,9,-100,90};
Bubble bubble = new Bubble();
bubble.sort(arr);
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i] + " ");
}
}
for(int ij= 0;j<arr.length;j++){
System.out.print(arr[j] + " ");
}
}
class Bubble{
public void Sort(int arr[]){
int temp = 0;
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]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
(2)快速排序法
3.插入式排序
(1)插入排序法
(2)希尔排序法
(3)二叉树排序法
4.查找
(1)顺序查找
(2)二分查找
思路:找到数组的中间数(midVal),和你要查找的数finalVal进行比较,如果midVal>findVal,则说明findVal在数的左边,
就把该数组二分。
class BinaryFind{
public void find (int leftIndex,int rightIndex,int val,int arr[]){
int midIndex = (rightIndex+leftIndex)/2;
int midVal = arr[midIndex];
if(rightIndex >= leftIndex){
if(midVal > val){
find (leftIndex,midIndex-1,val,arr);
}else if (midVal <val){
find (midIndex +1,rightIndex,val,arr);
}else if (midVal == val){
System.out.println(“找到下标”+midIndex);
}
}
}
}