1.插入排序
public static int[] insertionSort(int[] a){
int key;
int i;
for (int j = 1; j < a.length; j++) {
key = a[j];
i = j-1;
while(i > -1 && a[i] > key){
a[i+1] = a[i];
i = i-1;
}
a[i+1] = key;
}
return a;
}
2. 二进制整数相加
把两个n位二进制,将和存储到一个(n+1)数组C中
public static int[] add_binary(int[] a,int[] b){
int[] c = new int[a.length+1];
int carry = 0;
int i;
for (i = 0; i < a.length; i++) {
c[i] = (a[i]+b[i]+carry)%2;//余数
carry = (a[i]+b[i]+carry)/2;//进位
}
c[i] = carry;
return c;
}
3. 选择算法
首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置,再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。
/**
* 选择算法
* @param c
*/
public static int[] select_sort(int[] a){
int min;//index
int temp;
for(int i = 0;i < a.length;i++){
min = i;
for(int j = i+1;j < a.length;j++){
if(a[j] < a[min]){
min = j;
}
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
return a;
}
摘抄自《算法导论》