快速排序(Java实现)

封装成类: package com.roc.algorithms.sort; /** * 快速排序 * * @author imroc */ public class QuickSort { public static void sort(int[] a) { sort(a, 0, a.length - 1); } private static void sort(int[] a, int lo, int hi) { if (lo >= hi) { return; } int k = partition(a, lo, hi); sort(a, lo, k); sort(a, k + 1, hi); } private static int partition(int[] [Read More]

快速排序(golang实现)

封装成函数: //快速排序 func QuickSort(s []int) { sort(s, 0, len(s)-1) } func sort(s []int, lo, hi int) { if lo >= hi { return } k := partition(s, lo, hi) sort(s, lo, k) sort(s, k+1, hi) } func partition(s []int, lo, hi int) int { i, j := lo, hi+1 //将lo作为中间值 for [Read More]

插入排序(C-C++实现)

封装成函数: //交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //插入排序 void insertion_sort(int *a,int len) { int i,j; if (len < 2) { return; } for (i = 1; i < len; i++) { for (j = i; j > 0 && a[j] < [Read More]

插入排序(Java实现)

封装成类: package com.roc.algorithms.sort; /** * 插入排序 * * @author roc */ public class InsertionSort { //交换数组元素 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) { if (a.length < 2) { return; } for (int i = 1; i [Read More]

插入排序(golang实现)

封装成函数: //插入排序 func InsertionSort(s []int) { n := len(s) if n < 2 { return } for i := 1; i < n; i++ { for j := i; j > 0 && s[j] < s[j - 1]; j-- { swap(s, j, j - 1) } } } func swap(slice []int, i int, j int) { slice[i], slice[j] = slice[j], [Read More]

求n次方的高效算法

注:次幂n为整数,底数可以是整数、小数、矩阵等(只要能进行乘法运算的 举个求整数的n次方的例子(Go语言版): func pow(x, n int) int { ret := 1 // 结果初始为0 [Read More]

求两圆交点算法代码(golang实现)

实现代码: package main import ( "math" ) //代表一个点,包含横纵坐标 type Point struct { X, Y float64 } //代表一个圆,包含横纵坐标及半径 type Circle struct { Point R float64 } //创建圆对象 func NewCircle(x, y, r float64) [Read More]

线性复杂度选出第k小元素、中位数、最小的k个元素(C-C++实现)

封装成函数: #include <malloc.h> void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } int partition(int *a,int lo,int hi) { int i,j; i=lo; j=hi+1; while(1) { while(a[++i]<=a[lo]) { if(i==hi) { break; } } while(a[--j]>a[lo]) { if(j==lo) { break; } } if(i>=j) { break; } swap(a,i,j); } swap(a,lo,j); return j; } int* copy_of(int *a,int len) { int *ret = (int*)malloc(sizeof(int)*len); [Read More]