publicclassBubbleSort{publicstaticvoidbubbleSort(int[] a){if(a.length <=1){return;}for(int i =0; i < a.length; i++){boolean flag =false;for(int j =0; j < a.length - i -1;j++){if(a[j]> a[j +1]){int temp = a[j];
a[j]= a[j+1];
a[j+1]= temp;
flag =true;}}if(!flag){break;}}}}
插入排序
publicclassInsertionSort{publicstaticvoidinsertionSort(int[] a){if(a.length <=1){return;}for(int i =1; i < a.length; i++){int value = a[i];int j = i -1;for(;j >=0;j--){if(a[j]> value){
a[j+1]= a[j];}else{break;}]
a[j+1]= value;}}}
选择排序
publicclassSelectionSort{publicstaticvoidselectionSort(int[] a){if(a.length <=1){return;}for(int i =0; i < a.length -1; i++){int min = a[i];int index = i;for(int j = i +1; j < a.length; j++){if(min > a[j]){
index = j;
min = a[j];}}int temp = a[i];
a[i]= a[index];
a[index]= temp;}}}
计数排序
publicclassCountingSort{publicstaticvoidcountingSort(int[] a){if(a.length <=1){return;}//查找最大的数 确定桶的大小int max = a[0];for(int i =1; i < a.length; i++){if(max < a[i]){
max = a[i];}}//创建桶数组 并存入桶中int[] c =newint[max+1];for(int i =0; i < a.length; i++){
c[a[i]]++;}//对桶中元素进行计数for(int i =1; i < c.length; i++){
c[i]= c[i-1]+ c[i];}//对数组进行排序存入临时数组中int[] temp =newint[a.length];for(int i =0; i < a.length; i++){int index = c[a[i]]-1;
temp[index]= a[i];
c[a[i]]--;}//拷贝数组for(int i =0; i < a.length; i++){
a[i]= temp[i];}}}
归并排序
publicclassMergeSort{publicstaticvoidmergeSort(int[] a){mergeSortion(a,0,a.length-1);}/**
* 调用递归完成分治排序
* @param a
* @param p
* @param r
*/privatestaticvoidmergeSortion(int[] a,int p,int r){if(p >= r){return;}int q = p +(r - p)/2;mergeSortion(a,p,q);mergeSortion(a,q+1,r);merge(a,p,q,r);}/**
* 合并数组
* @param a
* @param p
* @param q
* @param r
*/privatestaticvoidmerge(int[] a,int p,int q,int r){int i = p;int j = q +1;int k =0;int[] temp =newint[r-p+1];while(i <= q && j <= r){if(a[i]<= a[j]){
temp[k++]= a[i++];}else{
temp[k++]= a[j++];}}//判断哪个子数组中有剩余数据int start = i;int end = q;if(j <= r){
start = j;
end = r;}//将剩余数据存入临时数组while(start <= end){
temp[k++]= a[start++];}//拷贝回原数组for(i =0; i <= r - p; i++){
a[p+i]= temp[i];}}}