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

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
2007-10-24 十大经典学生上课插嘴(转)