一道很常见的面试题,看似很简单,但面试时经常要求手写, 在面试略有压力的环境中,我们能发挥好吗? 好记性不如烂笔头,下面的代码都经过验证可运行的,以下均为Java代码。
1.网上最常见的冒泡算法
static void sort1(int []array){
for(int i = 0 ;i<array.length ;i++){
for(int j = i + 1 ; j<array.length ;j++){
if(arrya[i]<array[j]){
int temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
}
}
2.冒泡排序提升效率,从后往前比
static void sort2(int []array){
for(int i = 0 ;i < array.length - 1; i++){
boolean flag = false;
for(int j =array.length - 1; j > i; j--){
if(arrya[j] < array[j - 1]){
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
}
3.冒泡排序提升效率,从前往后比
static viod srot3(int []array){
for(int i = 0 ; i <array.length -1; i++){
boolean flag = flase;
for(int j=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
}
完整冒泡优化demon资源,亲测可用,大家复制后新建Java项目把这个文件粘贴进去就可以用了。
升序排序:
public class Test05 {
public static void main(String[] args) {
// 12,45,9,67,455,用冒泡排序实现升序排列。
int[] arr = { 12, 45, 9, 67, 455 };
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("排序后:");
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + "\t");
}
}
若要实现降序排列,只需将arr[j] > arr[j + 1]中的”<” 改为”