本节旨在收集经典算法。
一、累加算法
;~ 作 者 : 河许人
;~ 脚本说明: 1+2+...+100算法
;~ 环境版本 : Autohotkey v1.1.22.09
;~ 算法1(运算次数100)
/*
a:=0
loop,100
{
a:=A_Index+a ;这里取了一个巧 a+=a+1
}
MsgBox,%a%
*/
;~ 算法2(运算次数2)
;~ a:=1
;~ b:=100
;~ c:=(a+b)*(b-a+1)/2
;~ MsgBox,%c%
;~ 算法3(运算次数2)
;~ a:=1
;~ b:=100
;~ c:=a*(b-a+1)/2+b*(b-a+1)/2
;~ MsgBox,%c%
二、冒泡排序算法
BubbleSort(arr) {
n := arr.Length()
Loop % n {
swapped := false
i := 0
Loop % n-A_Index {
if (arr[i] > arr[i+1]) {
temp := arr[i]
arr[i] := arr[i+1]
arr[i+1] := temp
swapped := true
}
i++
}
if (!swapped) {
break
}
}
return arr
}
; 示例数组
arr := [64, 34, 25, 12, 22, 11, 90]
; 对数组进行冒泡排序
sortedArr := BubbleSort(arr)
loop % sortedArr.Length()
{
outsort.=sortedArr[A_Index] "`n"
}
; 输出排序后的数组
MsgBox, % outsort
; 定义一个数组,包含需要排序的元素
arr := [5, 2, 9, 1, 5, 6, 3]
; 输出排序前的数组内容
MsgBox % "排序前:" . ArrToString(arr)
; 调用冒泡排序函数对数组进行排序
BubbleSort(arr)
; 输出排序后的数组内容
MsgBox % "排序后:" . ArrToString(arr)
; 冒泡排序函数
BubbleSort(arr) {
local n := arr.Length()
local temp
; 外层循环控制需要进行多少轮冒泡
Loop % (n - 1) {
; 内层循环执行一轮冒泡
swapped := false
Loop % (n - A_Index) {
if (arr[A_Index] > arr[A_Index + 1]) {
; 交换两个元素位置
temp := arr[A_Index]
arr[A_Index] := arr[A_Index + 1]
arr[A_Index + 1] := temp
swapped := true
}
}
; 如果一轮冒泡没有发生任何交换,说明已经有序,提前退出
if (!swapped)
break
}
}
; 辅助函数:将数组转换为字符串
ArrToString(arr) {
local str := ""
Loop % arr.Length() {
str .= arr[A_Index] . ", "
}
return SubStr(str, 1, -2) ; 去掉最后的逗号和空格
}
2018年7月31日01:44:16:a += 1 非 a += a + 1