java 排序法

来源:互联网 发布:传淘宝工具怎么使用 编辑:程序博客网 时间:2024/06/15 13:49

主要排序法有: 
一、冒泡(Bubble)排序——相邻交换 
二、选择排序——每次最小/大排在相应的位置 
三、插入排序——将下一个插入已排好的序列中 
四、壳(Shell)排序——缩小增量 
五、归并排序 
六、快速排序 
七、堆排序 
八、拓扑排序 
九、锦标赛排序 
十、基数排序 

//冒泡排序法


public class Sort1 {


public static void main(String[] args) {

int arr[]={1,12,3,2,52,13};
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]+" ");
}
}


}

//选择排序法
public class Sort2 {



public static void main(String[] args) {

int arr[]={1,12,3,2,52,13,28,26,217,27};
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;
}
}
//档推出循环找到这次的最小值

temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+" ");
}
}


}

//插入式排序法
public class Sort3 {



public static void main(String[] args) {

int arr[]={1,12,3,2,52,13};

for(int i=1;i<arr.length;i++){
int insertVal=arr[i];
//insertVal最北和前一个数比较
int index=i-1;
while(index>=0&&insertVal<arr[index]){
arr[index+1]=arr[index];
index--;
}
//讲insertVal插入到适当位置
arr[index+1]=insertVal;
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}


}

下面是插入排序算法的一个  以学生的年龄为判断条件 的小案例(此案例应用在学生管理系统中)

public void sort(int sortType){
for(int i=1;i<student.length;i++){
Student next=student[i];
int j=i;
//shengxu
if(sortType<0){
while(j>0&&student[j-1].getAge()>next.getAge()){
student[j]=student[j-1];
j--;

}
}else{
while(j>0&&student[j-1].getAge()<next.getAge()){
student[j]=student[j-1];
j--;
}
}
student[j]=next;

}

//printStudent(10);
}

0 0