冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
1
public class Sort 2


{ 3

4
public void swap(int a[], int i, int j) 5

{ 6
int tmp = a[i]; 7
a[i] = a[j]; 8
a[j] = tmp; 9
} 10

11
//分区12
public int partition(int a[], int low, int high) 13

{ 14
int pivot, p_pos, i; 15
p_pos = low; 16
pivot = a[p_pos]; 17
for (i = low + 1; i <= high; i++) 18

{ 19
if (a[i] > pivot) 20

{ 21
p_pos++; 22
swap(a, p_pos, i); 23
} 24
} 25
swap(a, low, p_pos); 26
return p_pos; 27
} 28

29
public void quicksort(int a[], int low, int high) 30

{ 31
int pivot; 32
if (low < high) 33

{ 34
pivot = partition(a, low, high); 35
quicksort(a, low, pivot - 1); 36
quicksort(a, pivot + 1, high); 37
} 38

39
} 40

41
public static void main(String args[]) 42

{ 43

int vec[] = new int[]
{ 77, 19, 27, -9, 19, 34 }; 44
int temp; 45
46
System.out.println("对37, 47, 23, -5, 19, 56进行排序"); 47
// 选择排序法(Selection Sort) 48
long begin = System.currentTimeMillis(); 49
for (int k = 0; k < 1000000; k++) 50

{ 51
for (int i = 0; i < vec.length; i++) 52

{ 53
for (int j = i; j < vec.length; j++) 54

{ 55
if (vec[j] > vec[i]) 56

{ 57
temp = vec[i]; 58
vec[i] = vec[j]; 59
vec[j] = temp; 60
} 61
} 62

63
} 64
} 65
long end = System.currentTimeMillis(); 66
System.out.println(); //另起一行 67
System.out.println("选择法用时为:" + (end - begin) + "\n排序结果:"); 68
// 打印排序好的结果 69
for (int i = 0; i < vec.length; i++) 70

{ 71
System.out.print(vec[i]); 72
System.out.print(" "); 73
} 74
// 冒泡排序法(Bubble Sort) 75
begin = System.currentTimeMillis(); 76
for (int k = 0; k < 1000000; k++) 77

{ 78
for (int i = 0; i < vec.length; i++) 79

{ 80
for (int j = i; j < vec.length - 1; j++) 81

{ 82
if (vec[j + 1] > vec[j]) 83

{ 84
temp = vec[j + 1]; 85
vec[j + 1] = vec[j]; 86
vec[j] = temp; 87
} 88
} 89

90
} 91
} 92
end = System.currentTimeMillis(); 93
System.out.println(); //另起一行 94
System.out.println("冒泡法用时为:" + (end - begin)+ "\n排序结果:"); 95
// 打印排序好的结果 96
for (int i = 0; i < vec.length; i++) 97

{ 98
System.out.print(vec[i]); 99
System.out.print(" "); 100
} 101

102
// 插入排序法(Insertion Sort) 103
begin = System.currentTimeMillis(); 104
for (int k = 0; k < 1000000; k++) 105

{ 106
for (int i = 1; i < vec.length; i++) 107

{ 108
int j = i; 109
while (vec[j - 1] < vec[i]) 110

{ 111
vec[j] = vec[j - 1]; 112
j--; 113
if (j <= 0) 114

{ 115
break; 116
} 117
} 118
vec[j] = vec[i]; 119
} 120
} 121
end = System.currentTimeMillis(); 122
System.out.println(); //另起一行 123
System.out.println("插入法用时为:" + (end - begin)+ "\n排序结果:"); 124
// 打印排序好的结果 125
for (int i = 0; i < vec.length; i++) 126

{ 127
System.out.print(vec[i]); 128
System.out.print(" "); 129
} 130

131
// 快速排序法(Quick Sort) 132

133
Sort s = new Sort(); 134
begin = System.currentTimeMillis(); 135
for (int k = 0; k < 1000000; k++) 136

{ 137
s.quicksort(vec, 0, 5); 138
} 139
end = System.currentTimeMillis(); 140
System.out.println(); //另起一行 141
System.out.println("快速法用时为:" + (end - begin)+ "\n排序结果:"); 142
// 打印排序好的结果 143
for (int i = 0; i < vec.length; i++) 144

{ 145
System.out.print(vec[i]); 146
System.out.print(" "); 147
} 148
} 149

150
} 151

浙公网安备 33010602011771号