今天一方面是补齐了昨天的8种排序算法的动态GIF图演示和算法过程。另一方面,我也要针对Java代码如何实现这些算法进行阐述。很明显这些内容已经有无数人给出了比较简洁的代码实现过程,我只挑选其中几种算法进行说明。相比于算法实现的具体细节,算法的适用范围和复杂度更应该受到关注。
先放上最普通最麻烦的Bubble Sort吧。
public class BubbleSort {
public static void main(String[] args) {
int [] a = {1,100,234,44,3,2,4,5}; //给定一个待排序数组a
bubbleSort(a,a.length+1);
System.out.println(Arrays.toString(a)); }
public static int[] bubbleSort(int[] A, int n) { //排序方法的代码
for (int i=0;i A[j]){
int tmp = A[i]; //如果左边元素大于右边,则交换两元素,否则保持不动
A[i] = A[j]; A[j] = tmp; } 使用三句代码进行元素交换
}
}
return A; }
}
然后是插入排序。
public class InsertionSort {
public int[] insertionSort(int[] A, int n) {
int i, j, temp;
for(i = 1; i < n; i++){
temp = A[i]; //取i位置的值
for(j = i; j > 0 && A[j - 1] > temp; j-- ){ //这是两层for循环嵌套
//如果i元素的值比前一个元素小,则将该值插在该位置
A[j] = A[j - 1];
}
A[j] = temp;
}
return A; }
}
接下来是选择排序,它的目标是每次选择剩下元素中最小的值放在最前面。
public class SelectionSort {
public int[] selectionSort(int[] A, int n) {
for (int i = 0; i < n - 1; i++) {
int index = i;
int j; // 找出最小值的元素下标
for (j = i + 1; j < n; j++) {
if (A[j] < A[index]) {
//从第一个元素开始,比较两个元素
index = j; //如果A[j]小于选定的最小值,则交换对应的index
}
}
int tmp = A[index];
A[index] = A[i];
A[i] = tmp; //三句代码交换两个元素
} return A;
}
网友评论