在做笔试的时候,总会出现一些题目需要排序,为此可以提前准备两个排序。冒泡(Bubble sort)和快速排序(Quick sort)。
时间复杂度: 在最差的情况下,快速排序和冒泡排序的时间复杂度为O(n^2); 快速排序的平均时间复杂度为O(nlogn),在最优的情况下也是O(nlogn)
冒泡排序: 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。冒泡排序是一种稳定排序算法。 上代码
public static void BubbleSort(int[] a){
int len = a.length;
if(len ==0 || len ==1){
return ;
}
for (int i = 0; i < len-1; i++) {
for (int j = 0; j < len-i-1; ++j) {
if(a[j]>a[j+1]){
a[j] = a[j] ^ a[j+1];
a[j+1] = a[j] ^ a[j+1];
a[j] = a[j] ^ a[j+1];
}
}
}
}
快速排序
public static void QuickSort(int[] a,int low,int high){
int i,j,temp,t;
if(low>high){
return ;
}
i=low;
j=high;
temp = a[low];
while (i<j){
while (temp<=a[j] && i<j){
j--;
}
while (temp>=a[i] && i<j){
i++;
}
if(i<j){
a[j] = a[j] ^ a[i];
a[i] = a[j] ^ a[i];
a[j] = a[j] ^ a[i];
}
}
a[low] = a[i];
a[i] = temp;
QuickSort(a,low,j-1);
QuickSort(a,j+1,high);
}
|