3种排序算法

package java_xuexi;

public class xx5 {
public static void main(String[] args) {
// exe1();
//exe2();
exe3();

}

public static void exe1() {
/**
* 冒泡排序(稳定排序算法)
* 比较相邻两个元素,如果前面的大于后面的就交换位置
*/
int num[] = { 3, 6, 4, 15, 5, 9 };// 定义一个乱序数列
int len = num.length;
for (int i = 0; i < len - 1; i++) {//控制比较轮数
for (int j = 0; j < len - 1 - i; j++) {
if (num[j] > num[j + 1]) {// 交换位置
num[j] = num[j] + num[j + 1];
num[j + 1] = num[j] - num[j + 1];
num[j] = num[j] - num[j + 1];
}
}
}
for (int n : num) {// 输出结果
System.out.println(n);
}
}

public static void exe2() {
/**
* 选择排序(不稳定排序算法)
* 每一趟从待排序数组中选出最小或最大的元素,顺序放在已排好序的数列后面
*/
int num[] = { 3, 5, 2, 12, 7, 9 };
int minIndex = 0;// 用于记录每次比较的最小值的下标
for (int i = 0; i < num.length - 1; i++) {//控制比较轮数
minIndex = i;// 每轮假设一个最小值下标
for (int j = i + 1; j < num.length; j++) {
if (num[minIndex] > num[j]) {
minIndex = j;
}
}
if (minIndex != i) {// 交换位置
num[minIndex] = num[minIndex] + num[i];
num[i] = num[minIndex] - num[i];
num[minIndex] = num[minIndex] - num[i];
}
}
for (int n : num) {// 输出结果
System.out.println(n);
}
}
public static void exe3() {
/**
* 插入排序
*/
int num[]={4,7,3,12,5,9};
for(int i=1;i<num.length;i++){ //控制比较轮数
int temp=num[i]; //记录操作数
int j=0;
for(j=i-1;j>=0;j--){
if(num[j]>temp){
num[j+1]=num[j];
}else{
break;
}
}
if(num[j+1]!=temp){
num[j+1]=temp;
}
}
for(int n:num){ //输出结果
System.out.println(n);
}
}
}

猜你喜欢

转载自www.cnblogs.com/lsjyjq/p/11251998.html