二分法查找(golang实现)

封装成函数: //二分法查找 //切片s是升序的 //k为待查找的整数 //如果查到有就返回对应角标, //没有就返回-1 func BinarySearch(s []int, k int) int { lo, hi := 0, len(s)-1 for lo [Read More]

冒泡排序(C-C++-实现)

两种类似的方式: //交换数组元素 void swap(int *a,int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t; } //第一种冒泡排序 void bubble_sort1(int *a,int len){ int max = len-1; int i,j; for(i=0;i<max;i++){ for(j=0;j<max-i;j++){ if(a[j+1]<a[j]){ swap(a,j,j+1); } } } } //第二种冒泡排序 void bubble_sort2(int [Read More]

冒泡排序(Java实现)

两种类似的方式: /** * 冒泡排序 * @author roc */ public class BubbleSort { //交换数组元素 private static void swap(int[] a,int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t; } //第一种冒泡排序 public static void sort1(int[] a){ int max = a.length-1; int i,j; for(i=0;i<max;i++){ for(j=0;j<max-i;j++){ [Read More]

冒泡排序(golang实现)

有两种相似的方式: func swap(slice []int, i int, j int) { slice[i], slice[j] = slice[j], slice[i] } //第一种冒泡排序 func BubbleSort1(slice []int) { length := len(slice) max := length - 1 for i := 0; i < max; i++ { for j := 0; j < max-i; j++ { if slice[j+1] < slice[j] { swap(slice, j, j+1) [Read More]

堆排序(C-C++实现)

封装成函数: //交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //下沉(由上至下的堆有序化) void sink(int *a,int k,int N) { while (1) { int i = 2 * k; if (i > N) //保证该 [Read More]

堆排序(Java实现)

封装成类: package com.roc.algorithms.sort; /** * 堆排序 * a[0]不用,实际元素从角标1开始 * 父节点元素大于子节点元素 * 左子节点角标为2*k * 右子节点角标为2*k+1 * 父节 [Read More]

堆排序(golang实现)

封装成函数: //堆排序 //s[0]不用,实际元素从角标1开始 //父节点元素大于子节点元素 //左子节点角标为2*k //右子节点角标为2*k+1 [Read More]

希尔排序(C-C++实现)

封装成函数: //交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //希尔排序 void shell_sort(int *a,int len) { int h=1,i,j; while(h<len/3) //寻找合适的间隔h { h = 3*h+1; } while(h>=1) { //将数组变为间 [Read More]

希尔排序(Java实现)

封装成类: package com.roc.algorithms.sort; /** * 希尔排序 * * @author imroc */ public class ShellSort { //交换数组元素 private static void swap(int[] a, int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } public static void sort(int[] a) { int h = 1; while (h < a.length / 3) {// [Read More]

希尔排序(golang实现)

封装成函数: func ShellSort(a []int) { n := len(a) h := 1 for h < n/3 { //寻找合适的间隔h h = 3*h + 1 } for h >= 1 { //将数组变为间隔h个元素有序 for i := h; i < n; i++ { //间隔 [Read More]