冒泡排序
时间是o(n2)
首先从序号0开始直到数组长度减1,查找最大值,并两两交换,将最大值交换到最后,然后重复过程,需要排序的长度要减去已经找到的最大值。
import java.util.*;
public class BubbleSort {
public int[] bubbleSort(int[] A, int n) {
// write code here
int t = 0;
int len = A.length;
for (int j = 0; j < A.length; j++){
for (int i = 0; i < len; i++){
if (A[i] > A[i+1]){
t = A[i+1];
A[i+1] = A[i];
A[i] = t;
}
}
len--;
}
return A;
}
}
选择排序
数组长度为n
第一步从数组n个数中,选出最大的数,并且于A[0]交换,后面的步骤重复第一步,只是从A[i]开始。
import java.util.*;
public class SelectionSort {
public int[] selectionSort(int[] A, int n) {
// write code here
for(int i = 0; i < n; i++){
int firstArray = A[i];
int number = i;
for(int j = i; j < n; j++){
if(firstArray > A[j]){
firstArray = A[j];
number = j;
}
}
int temp = A[i];
A[i] = A[number];
A[number] = temp;
}
return A;
}
}
插入排序
从序号1开始与前面比较,当发现比前面的值小,就插入,直到没有位置可以向前插入,序号就加1,在进行与前面的对比。
import java.util.*;
public class InsertionSort {
public int[] insertionSort(int[] A, int n) {
// write code here
for (int i = 0; i < n-1; i++){
for(int j = i+1; j >0;j--){
if(A[j] < A[j-1]){
int temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
}
}
}
return A;
}
}
递归排序
将数组分为左右两部分,然后每一部分继续递归,分成更小的部分,直到left=right,然后再将最小部分合并,合并时需要查看A[left]和A[right]的大小,大于就先将大的一部分放入临时数组中,再将小的数组放入临时数组,left和right起到了像指针一样的作用,将这一个小数组代码块放入原来数组的相应位置,再往上传递。
import java.util.*;
public class MergeSort {
public int[] mergeSort(int[] A, int n) {
// write code here
sort(A, 0, n-1);
return A;
}
public void sort(int[] data, int left, int right){
if(left == right) return;
int middle = (left + right)/2;
sort(data, left, middle);
sort(data, middle+1, right);
merge(data, left, middle, right);
}
public static void merge(int[] data, int left, int middle, int right){
int[] newData = new int[right - left +1];
int l = left;
int r = middle + 1;
int index = 0;
while(l <= middle&& r<=right){
if(data[l] <= data[r]){
newData[index++] = data[l++];
}else{
newData[index++] = data[r++];
}
}
while(l <= middle){
newData[index++] = data[l++];
}
while(r <= right){
newData[index++] = data[r++];
}
for(int i = 0; i < newData.length; i++){
data[left + i] = newData[i];
}
}
}