/** 冒泡 */
public static void bober(int[] array){
int length = array.length;
for(int i=0;i<length-1;i++){ /** 每两个比较一次,总次数是 length-1 */
for(int j=0;j<length-1-i;j++){ // 每次总有一个最大的找出 -i
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
/** 快排 */
public static void quickSort(int[] array,int left,int right){
if(array==null){
return;
}
int length = array.length;
if(length == right){ // 防止输入数组的非下标长度,造成越界
right = right -1;
}
if(left > right){
return;
}
int low = left;
int hight = right;
int key = array[left];
while(low<hight){
while(low<hight && array[hight]>=key){
hight --;
}
array[low] = array[hight];
while(low<hight && array[low]<=key){
low++;
}
array[hight] = array[low];
}
array[low] = key; /** 被比较的数此时应该回到 low 位置 */
quickSort(array,left,low-1);
quickSort(array,low+1,right);
}
/** 二分查找 */
public static int binary(int[] array, int value){
int low = 0;
int high = array.length - 1; // 防止越界
while(low <= high){
int middle = (low + high) / 2;
if(value == array[middle]){
return middle; // 下标
}
if(value > array[middle]){
low = middle + 1;
}
if(value < array[middle]){
high = middle - 1;
}
}
return -1;
}
手写排序算法--冒泡,快排,二分
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 冒泡排序 - (void)bubbleSort { NSArray* nums =@[@(8),@(3),@(4)...
- // 折半查找 int search(int *a, int n, int key) { int min, m...
- 知识扩充:时间复杂度:算法的时间复杂度是一个函数,描述了算法的运行时间。时间复杂度越低,效率越高。自我理解:一个算...
- Java基础算法:堆排,快排,二分查找 1. 堆排 满二叉树:所有叶结点都有同样的深度,每个内部结点都有两个儿子 ...