大家无论是在平常生活,还是跳槽面试的时候都会问到一些算法的问题,自己没事就瞎写瞎看的比较两个算法的速度,数量小的话,两个算法执行时间是没有差别,大数据量存在不同的差异。
package com.netease.dealer.testarithmetic;
import com.netease.dealer.util.json.FastjsonUtil;
public class Day1 {
//冒泡排序
public static void bubbleSort(int numbers[]){
int size = numbers.length;
int temp = 0;
for(int i=0; i<size;i++){
for(int j=i+1;j<size;j++){
if(numbers[j]<numbers[i]){
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
}
//冒泡另一种写法
public static void bubbleSort2(int numbers[]){
int size = numbers.length;
int temp = 0;
for(int i=0; i<size;i++){
for(int j=0;j<size-1-i;j++){
if(numbers[j]>numbers[j+1]){
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int number[]={12,10,558,239,58,26,29,12};
System.out.println(System.currentTimeMillis());
bubbleSort(number);
System.err.println(System.currentTimeMillis());
System.out.println(FastjsonUtil.toJSONString(number));
int number2[]={12,10,558,239,58,26,29};
System.out.println(System.currentTimeMillis());
bubbleSort2(number2);
System.out.println(System.currentTimeMillis());
System.out.println(FastjsonUtil.toJSONString(number2));
sort(number,0,number.length-1);
System.out.println(FastjsonUtil.toJSONString(number));
}
//快速排序
public static void sort(int numbers[],int low,int high){
int start = low;
int end = high;
int key = numbers[low];
while(end>start){
//从后往前比较
while(end > start && numbers[end] >=key)
end--;
if(numbers[end] <= key){
int temp = numbers[end];
numbers[end] = numbers[start];
numbers[start] = temp;
}
//从前往后比较
while(end>start &&numbers[start]<=key)
start++;
if(numbers[start]>=key){
int temp = numbers[start];
numbers[start] = numbers[end];
numbers[end] = temp;
}
}
if(start > low) sort(numbers,low,start-1);
if(end <high) sort(numbers,end+1,high);
}
}