java 排序算法四例
其实有5种排序算法,目前理解了4个:
1
2
class zyfsort {
3
public static void main (String[] args) {
4
int gohome[] = new int[]{12,7,54,21,1,4,65,76,34,9,3,6};
5
System.out.println("插入排序算法");
6
// InsertionSort(gohome);
7
System.out.println("-------------------------------------------");
8
System.out.println("选择排序算法");
9
// SelectSort(gohome);
10
System.out.println("-------------------------------------------");
11
System.out.println("冒泡排序算法");
12
// BubbleSort(gohome);
13
System.out.println("-------------------------------------------");
14
gohome =QuickSort(gohome);
15
16
for (int t=0; t<gohome.length;t++)
17
{
18
System.out.print(gohome[t]+"--");
19
}
20
}
21
22
//插入排序算法
23
public static void InsertionSort(int[] goal)
24
{
25
for (int i = 1; i<goal.length; i++)
26
{ int now = i;
27
int frank = goal[i];
28
while (now>0 && goal[now-1] <= frank)
29
{
30
goal[now]=goal[now-1];
31
now--;
32
}
33
goal[now]=frank;
34
35
36
}
37
38
39
for (int t=0; t<goal.length;t++)
40
{
41
System.out.print(goal[t]+"--");
42
}
43
}
44
45
//选择排序算法
46
public static void SelectSort(int[] goal)
47
{
48
int max;
49
int stmp;
50
for (int i = 0; i<goal.length-1; i++)
51
{
52
max=i;
53
for (int j = i+1; j<goal.length; j++)
54
if(goal[j]>goal[max])
55
max=j;
56
57
stmp = goal[i];
58
goal[i]=goal[max];
59
goal[max]=stmp;
60
61
}
62
for (int t=0; t<goal.length;t++)
63
{
64
System.out.print(goal[t]+"--");
65
}
66
67
68
}
69
70
//冒泡排序算法
71
public static void BubbleSort(int[] goal)
72
{ int stmp;
73
for (int i = 1; i< goal.length; i++)
74
{
75
for(int j=0; j<i;j++)
76
{
77
if(goal[i]>goal[j])
78
{
79
stmp=goal[i];
80
goal[i]=goal[j];
81
goal[j]=stmp;
82
}
83
}
84
85
}
86
for (int t=0; t<goal.length;t++)
87
{
88
System.out.print(goal[t]+"--");
89
}
90
}
91
92
//快速排序算法
93
public static int[] QuickSort(int[] number) {
94
QuickSort(number, 0, number.length-1);
95
return number ;
96
}
97
private static void QuickSort(int[] number,int left, int right) {
98
int stmp;
99
if(left < right) {
100
System.out.println(left+" | "+right+" | "+(left+right)/2);
101
int s = number[(left+right)/2];
102
int i = left - 1;
103
int j = right + 1;
104
while(true) {
105
// 向右找
106
while(number[++i] > s) ;
107
// 向左找
108
while(number[--j] < s) ;
109
if(i >= j)
110
break;
111
stmp = number[i];
112
number[i] = number[j];
113
number[j] = stmp;
114
}
115
QuickSort(number, left, i-1); // 对左边进行递回
116
QuickSort(number, j+1, right); // 对右边进行递回
117
}
118
}
119
}
120

2
class zyfsort {3
public static void main (String[] args) {4
int gohome[] = new int[]{12,7,54,21,1,4,65,76,34,9,3,6}; 5
System.out.println("插入排序算法");6
// InsertionSort(gohome);7
System.out.println("-------------------------------------------");8
System.out.println("选择排序算法");9
// SelectSort(gohome);10
System.out.println("-------------------------------------------");11
System.out.println("冒泡排序算法");12
// BubbleSort(gohome);13
System.out.println("-------------------------------------------");14
gohome =QuickSort(gohome);15
16
for (int t=0; t<gohome.length;t++)17
{18
System.out.print(gohome[t]+"--");19
} 20
}21
22
//插入排序算法23
public static void InsertionSort(int[] goal)24
{ 25
for (int i = 1; i<goal.length; i++)26
{ int now = i;27
int frank = goal[i]; 28
while (now>0 && goal[now-1] <= frank)29
{30
goal[now]=goal[now-1];31
now--; 32
}33
goal[now]=frank;34
35
36
} 37
38
39
for (int t=0; t<goal.length;t++)40
{41
System.out.print(goal[t]+"--");42
}43
}44
45
//选择排序算法 46
public static void SelectSort(int[] goal)47
{ 48
int max;49
int stmp; 50
for (int i = 0; i<goal.length-1; i++)51
{52
max=i;53
for (int j = i+1; j<goal.length; j++)54
if(goal[j]>goal[max])55
max=j;56
57
stmp = goal[i];58
goal[i]=goal[max];59
goal[max]=stmp; 60
61
} 62
for (int t=0; t<goal.length;t++)63
{64
System.out.print(goal[t]+"--");65
}66
67
68
}69
70
//冒泡排序算法 71
public static void BubbleSort(int[] goal)72
{ int stmp;73
for (int i = 1; i< goal.length; i++)74
{75
for(int j=0; j<i;j++)76
{77
if(goal[i]>goal[j])78
{79
stmp=goal[i];80
goal[i]=goal[j];81
goal[j]=stmp; 82
} 83
} 84
85
}86
for (int t=0; t<goal.length;t++)87
{88
System.out.print(goal[t]+"--");89
}90
}91
92
//快速排序算法93
public static int[] QuickSort(int[] number) {94
QuickSort(number, 0, number.length-1);95
return number ;96
}97
private static void QuickSort(int[] number,int left, int right) {98
int stmp;99
if(left < right) {100
System.out.println(left+" | "+right+" | "+(left+right)/2);101
int s = number[(left+right)/2];102
int i = left - 1;103
int j = right + 1;104
while(true) {105
// 向右找106
while(number[++i] > s) ;107
// 向左找108
while(number[--j] < s) ;109
if(i >= j)110
break; 111
stmp = number[i];112
number[i] = number[j];113
number[j] = stmp; 114
}115
QuickSort(number, left, i-1); // 对左边进行递回116
QuickSort(number, j+1, right); // 对右边进行递回117
} 118
}119
}120




浙公网安备 33010602011771号