插入排序(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]

选择排序(C-C++-实现)

封装成函数: //交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //选择排序 void selection_sort(int *a,int len) { int m = len-1; //以免每次循环判断都运算 int i,j,k; for (i=0; i<m; i++) { k=i; for (j=i+1; j<len; [Read More]