版权声明:本文为博主原创文章,未经博主允许不得转载。
难度:入门
要求:
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2
) 的排序算法。
样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。
思路:
冒泡排序
/**
* @param A an integer array
* @return void
*/
public void sortIntegers(int[ ] A) {
// Write your code here
for(int i = 0; i < A.length; i++){
for(int j = 0; j < A.length - i - 1; j++){
if(A[j] > A[j+1]){
int tmp = A[j];
A[j] = A[j+1];
A[j+1] = tmp;
}
}
}
}
插入排序
/**
* @param A an integer array
* @return void
*/
public void sortIntegers(int[ ] A) {
// Write your code here
int j,tmp;
for(int i = 1; i < A.length; i++){
tmp = A[i];
for(j = i; j > 0 && [j-1] > tmp; j--){
A[j] = A[j-1];
}
A[j] = tmp;
}
}
选择排序
public static void selectSort(int[] data) {
for(int i = 0; i < data.length; i++){
int tmp = data[i];
int index = i;
for(int j = i + 1; j < data.length; j++){
if(data[j] < tmp){
tmp = data[j];
index = j;
}
}
swap(data,i,index);
}
}
public static void swap(int[] data, int i, int j) {
if (i == j) {
return;
}
data[i] = data[i] + data[j];
data[j] = data[i] - data[j];
data[i] = data[i] - data[j];
}