/*** 冒泡排序法, 注意这里是降序 */
public int[] bubleSort(int[] intArr){
int length = intArr.length;
for (int i=0; i<length; i++){
for (int j=i+1; j<length; j++){
if (intArr[j] > intArr[i]){
int temp = intArr[j];
intArr[j] = intArr[i];
intArr[i] = temp;
}
}
}
return intArr;
}
这里如果要改为升序,只需将 intArr[j] > intArr[i] 改为intArr[j] < intArr[i]
当然,冒泡排序 可以优化
在某些时候,循环还未终止,整个数组已经排好序,此时应及时终止循环。
(冒泡每次都会比较相邻两个数并交换次序不对的组,若一次循环后,都没进行交换,则已经完成排序)
public class Bubble {
public static void sort(int[] arr){
int temp;
boolean changed;
for(int i = 0;i < arr.length-1;i++){
changed = false;
for(int j = 0;j < arr.length-1-i;j++){
if(arr[j]>arr[j+1]) {
swap(arr,j,j+1);
changed = true;
}
}
if(!changed){
break;
}
}
}
public static void swap(int []arr,int a ,int b){
int temp=arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
插入排序:
从第二个元素开始,将当前元素插入到前面对应位置,使当前元素i 和之前元素形成有序数组。
比较规则:
正常:
从第一个元素开始,若当前元素i小于有序数组中的元素j,则从该元素开始将有序数组依次后移一位,
并将当前元素i放置到该元素j位置。(插入)
简易:
从有序数组最后一个元素开始,若当前元素i小于该元素j,则交换当前元素和该元素。
注意这里是升序
public class Insertion {
public static void sort(int[] arr){
int pos,temp;
for(int i=1;i<arr.length;i++){
pos = i;
while(pos!=0 && arr[pos]<arr[pos-1]){
temp = arr[pos];
arr[pos] = arr[pos-1];
arr[pos-1] = temp;
pos--;
}
}
}
}