blockchain go語言常用演算法

2021-08-13 02:15:03 字數 3053 閱讀 3483

package main

import

"fmt"

//定義乙個排序的介面

type sortinte***ce inte***ce

//定義額排序的結構體

type sortor struct

func main()

learnsort := sortor

learnsort.sort(arry)

fmt.println(learnsort.name, arry)

}//結構體實現介面,巢狀迴圈實現氣泡排序

func(sorter sortor) sort(arry int)}}}

快速排序原理不多廢話,直接上**

package main

import

"fmt"

func main()

sort2(arry,0, len(arry)-1)

fmt.println(arry)

}//快速排序**

func sort2(arry int, low int, high int)

if arry[endindex] <= key

for endindex > startindex && arry[startindex] <= key

if arry[startindex] >= key

}if startindex > low

if endindex < high

}//結果是[3 3 6 4 7 8 12 18 15]

package main

import

"fmt"

func main()

sort3(arry)

fmt.println(arry)

}//從前往後排,篩選出最小的往前移動

func sort3(arry1 int)

}if i != k

}}

package main

import (

"fmt"

)//堆排序

//s[0]不用,實際元素從角標1開始

//父節點元素大於子節點元素

//左子節點角標為2*k

//右子節點角標為2*k+1

//父節點角標為k/2

func heapsort(s int)

//下沉排序

for n >1

}//下沉(由上至下的堆有序化)

func sink(s int, k, n int)

if i < n && s[i+1] > s[i]

if s[k] >= s[i]

swap(s, k, i)

k = i

}}func swap(s int, i int, j int)

func main()

fmt.println(s[1:])

heapsort(s)

fmt.println(s[1:])

}

package main

import(

"container/list"

"fmt"

)func main()

fmt.println(s)

insertionsort(s)

fmt.println(s)

}func insertionsort(s int)

for j :=1; j < n; j++

}}//交換

func swap(slice int, j int, j int)

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序,因dl.shell於2023年提出而得名。

該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。

合併排序演算法是用分治策略實現對n個元素進行排序的演算法。其基本思想是:

將待排序元素分成大小大致相同 的兩個子集合,分別 對兩個子集合進行排序,最終將排好序的子集合合併成所要求的排好序的集合。

一句話概括就是將一段資料分成前後兩個的陣列進行大小比較(分治到每乙個小塊都是2個),然後再合併進行比較

package main

import

"fmt"

func main()

fmt.print("排序前")

fmt.println(arr01)

mergesort(arr01,0,len(arr01)-1)

fmt.print("排序後")

fmt.println(arr01)

}func mergesort(arr int,low,high int)

}func merge1(arr int,low,mid,high int)

arrright[rightlen]=99999

//哨兵牌

fmt.println(arrright)

fmt.println(arrleft)

i,j:=0

,0for k:=low;k<=high;k++else}}

r語言qsignrank函式用法 R語言常用函式名

一 資料管理 vector 向量 numeric 數值型向量 logical 邏輯型向量 character 字元型向量 list 列表 data.frame 資料框 c 連線為向量或列表 length 求長度 subset 求子集 seq,from to,sequence 等差序列 rep 重複 ...

常成員,常函式,常物件

知識點1.常物件中的任何型別的資料成員 無論私有還是公有 的值都不能被改變。知識點2.常物件能呼叫的 1.公有的常成員函式 2.建構函式 3.公有的靜態函式 知識點3.常物件與常成員函式只有同時存在才都有意義 知識點4.普通物件既可以呼叫常成員函式,也可以呼叫非常成員函式 知識點5.常成員函式不能更...

常物件,常成員函式,常引用

宣告顯示 const 型別說明符 物件名 常物件的資料成員值在物件的整個生存期間不能被改變,即就是,常物件必須進行初始化,而且不能被更新。宣告形式 型別說明符 函式名 參數列 const 注意 1.在函式定義部分也需要帶const關鍵字。2.乙個常物件只能呼叫它的常成員函式,是常物件唯一的對外介面方...