排序
排序是将多个数据,依指定的顺序进行排列的过程。
排序的分类
内部排序
指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)。
外部排序
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
冒泡排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。
案例来说明冒泡法。我们将五个无序:24,69,80,57,13,使用冒泡排序法将其排成一个从小到大的有序数列。
import java.util.Scanner;
public class BubbleSort{
public static void main(String[] args){
int[] arr = {
24, 69, 80, 57, 13};
int temp = 0;
System.out.println("现在数组为:");
for (int i = 0; i < arr.length; i++ ) {
System.out.print(arr[i] + " ");
}
for(int i = 0; i < arr.length -1; i++){
//length 个元素,需要 length - 1次排序
for(int j = 0; j < arr.length - 1 - i; j++){
//每次排序会进行 length -1 - i 次比较
if(arr[j] > arr[j + 1]){
//交换,每次排序把最大的元素换到后面
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("\n=== 第" + (i+1) + "次排序后数组为===");
for(int k = 0; k < arr.length; k++){
System.out.print(arr[k] + " ");
}
}
}
}
查找
常用的查找
顺序查找
例子
有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王。数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称。要求: 如果找到了,就提示找到,并给出下标值。
import java.util.Scanner;
public class SeqSearch{
public static void main(String[] args){
String[] names = {
"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
int index = -1;
System.out.println("请输入你要找的名字:");
Scanner myScanner = new Scanner(System.in);
String findname = myScanner.next();
for(int i = 0; i < names.length; i++){
if (findname.equals(names[i])){
System.out.println("找到" + findname +"啦!");
System.out.println("在数组中的下标是: " + i