1)内部排序:
将需要处理的所有数据都加载到内部存储器中进行排序
交换式排序法、选择式排序法和插入式排序法
2)数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。
合并排序和直接合并排序
排序:就是把一组记录(元素)按照某个域的值递增或递减的次序重新排列的过程。
交换式排序:
属于内部排序,运用数据值比较,依判断规则对数据位置进行交换,以达到排序的目的。
1、冒泡排序
2、快速排序
冒泡排序:
package com.test1;
public class Demo5_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]={1,6,0,-1,9};
int a=12;
//创建一个Bubble类
Bubble bubble=new Bubble();
bubble.sort(arr);
bubble.test(a);
System.out.println(a);
}
}
class Bubble{
//测试
public void test(int a){
a++;
}
//排序方法
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;
}
}
}
//输出最后结果
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
选择排序:
class Select{
//选择排序
public void sort(int arr[]){
int temp=0;
for(int j=0;j<arr.length;j++){
//认为第一个数就是最小的
int min=arr[j];
//记录最小数的下标
int minIndex=j;
for(int k=j+1;k<arr.length;k++){
if(min>arr[k]){
//修改最小值
min=arr[k];
minIndex=k;
}
}
//当退出for就找到这次的最小值
temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}