排序
1)选择排序:
2)冒泡排序:
3)插入排序:
排序过程的某一中间时刻,R被划分成两个子区间R[1..i-1](已排好序的有序区)和
R[i..n](当前未排序的部分,可称无序区)。
插入排序的基本操作是将当前无序区的第1个记录R[i]插人到有序区R[1..i-1]中适当的
位置上,使R[1..i]变为新的有序区。因为这种方法每次使有序区增加1个记录,通常称增量法。
插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的
牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。为了找到这个正确
的位置,须自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。
package test06;
import java.util.Random;
import java.util.Scanner;
public class SortNu {
public static void main(String[] args) {
int n;
Scanner r = new Scanner(System.in);
n = r.nextInt();
int[] j = new int[n];
for (int i = 0; i < n; i++) {
Random m = new Random();
j[i] = m.nextInt(20);
System.out.print("\t" + j[i]);
}
Selection(j);
for (int i = 0; i < n; i++) {
System.out.print("\t" + j[i]);
}
System.out.println(' ');
System.out.println("------------------------------------------------------------");
for (int i = 0; i < n; i++) {
Random m = new Random();
j[i] = m.nextInt(20);
System.out.print("\t" + j[i]);
}
Bubble(j);
for (int i = 0; i < n; i++) {
System.out.print("\t" + j[i]);
}
System.out.println(' ');
System.out.println("------------------------------------------------------------");
for (int i = 0; i < n; i++) {
Random m = new Random();
j[i] = m.nextInt(20);
System.out.print("\t" + j[i]);
}
Insertion(j);
for (int i = 0; i < n; i++) {
System.out.print("\t" + j[i]);
}
System.out.println(' ');
}
public static void Selection(int[] j) {
for (int i = 0; i <j.length-1; i++) {
for (int t = i+1 ; t < j.length; t++) {
if (j[i] > j[t]) {
int n = j[i];
j[i] = j[t];
j[t] = n;
}
}
}
System.out.println(" ");
System.out.println("这是选择排序");
}
public static void Bubble(int[] j) {
for (int i = 0; i < j.length-1; i++) {
for (int t = 0 ; t < j.length-i-1; t++) {
if (j[t] >j[t+1]) {
int n = j[t+1];
j[t+1] = j[t];
j[t] = n;
}
}
}
System.out.println(" ");
System.out.println("这是冒泡排序");
}
public static void Insertion(int[] j) {
for (int i = 1; i < j.length; i++) //未安排好
{
for (int t = 0 ; t < i; t++)//已经排好
{System.out.println("**00000000***");
if (j[i]<j[t]) {//逐一拿已经排好的和即将要排的进比较
int n = j[i];//把要安排的存储到n中
for(int m=i;m>t;m--){//现在第i位置可以安排第i-1的数据 以此类推,直到i-1=t+1
j[m] = j[m-1]; }
j[t]=n;
System.out.println(t+"*********");
}
}
}
System.out.println(" ");
System.out.println("这是插入排序");
}
}