排序和查找是属于数据结构与算法中的内容,不是第一阶段的学习重点,所以此处只是简略介绍排序和查找思想,为后续学习做铺垫。
知识点概述:
1. 排序就是将一组数据按照指定的顺序进行排列的过程;
2. 排序分为两类。一种是内部排序,指将需要处理的所有数据都加载到内部储存器中进行排序,包括交换式排序、选择式排序、插入式排序;另一种是外部排序,这种是针对数据量较大的排序,此时无法将数据全部加载到内存中而借助外部存储进行排序,包括合并排序、直接合并排序;
3. 冒泡排序的核心思路是依次比较相邻元素的大小,若逆序则交换,若顺序则继续往下比较。设计冒泡排序代码有两个关键点,一是排序的轮数=元素总数量– 1。例如要排5个元素则一共要排序4轮;二是每轮排序中要排序的次数 = 元素总数量 – 1 – 当前轮数,例如要排5个元素,此时排到第3轮,则第3轮排序时要排5-1-3=1次。
// 冒泡排序
// 程序要求: 将数组{24,69,80,57,13}从小到大排序
int arr[] = {24,69,80,57,13};
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;
}
}
}
for(int i = 0 ; i < arr.length ; i++){
System.out.println(arr[i]); // 输出 13 24 57 69 80
}
4. 查找的方法常用的有两种,一种是顺序查找,它的思路是遍历数组中每一个元素,若找到匹配的就停下;另一种是二分查找,现将数组排序,然后取数组的中间值,若目标元素大于这个中间值就往前半段找,若目标元素小于这个中间值就往后半段找