package main
import (
"fmt"
)
type Arr struct {
Cnt int
Len int
Pbase *[]int
}
func init_arr(arr *Arr,len int) {
if len<1{
panic("长度不能小于1")
}
var arr_int=make([]int,len)
arr.Pbase=&arr_int
arr.Cnt=0
arr.Len=len
}
func is_full(arr *Arr) bool {
if arr.Len==arr.Cnt {
return true
}
return false
}
func is_empty(arr *Arr) bool {
if arr.Cnt==0 {
return true
}
return false
}
func append_arr(arr *Arr,val int) bool {
if(is_full(arr)){
return false
}
(*arr.Pbase)[arr.Cnt]=val
arr.Cnt++
return true
}
func insert_arr(arr *Arr,pos,val int) bool {
if is_full(arr) || pos>arr.Cnt-1 || pos<0 {
return false
}
i,j:=pos,arr.Cnt-1
for ;i<=j;j--{
(*arr.Pbase)[j+1]=(*arr.Pbase)[j]
}
(*arr.Pbase)[pos]=val
arr.Cnt++
return true
}
func delete_arr(arr *Arr,pos int)(bool,int){
if is_empty(arr) || pos>arr.Cnt-1 || pos<0{
return false,0
}
i,j:=pos,arr.Cnt-1
re:=(*arr.Pbase)[pos]
for ;i<j;i++ {
(*arr.Pbase)[i]=(*arr.Pbase)[i+1]
}
(*arr.Pbase)[j]=0
arr.Cnt--
return true,re
}
func get(arr *Arr,pos int)int {
if is_empty(arr) || pos>arr.Cnt-1 || pos<0 {
return 0
}
return (*arr.Pbase)[pos]
}
func sort_arr(arr *Arr) bool {
if is_empty(arr) || arr.Cnt==1 {
return false
}
//var tmp int
for i:=0;i<arr.Cnt;i++{
for j:=i;j<arr.Cnt;j++{
if (*arr.Pbase)[j]<(*arr.Pbase)[i] {
tmp:=(*arr.Pbase)[i]
(*arr.Pbase)[i] = (*arr.Pbase)[j]
(*arr.Pbase)[j] = tmp
}
}
}
return true
}
func sort_arr2(arr *Arr) bool {
if is_empty(arr) || arr.Cnt==1 {
return false
}
for i:=arr.Cnt-1;i>0;i--{
for j:=0;j<i;j++{
tmp:=(*arr.Pbase)[j]
if (*arr.Pbase)[j+1]<tmp{
(*arr.Pbase)[j]=(*arr.Pbase)[j+1]
(*arr.Pbase)[j+1]=tmp
}
}
}
return true
}
func show_arr(arr *Arr){
if is_empty(arr) {
return
}
for i:=0;i<arr.Cnt;i++ {
fmt.Print((*arr.Pbase)[i]," ")
}
fmt.Println()
}
func inversion_arr(arr *Arr) bool{
if is_empty(arr) || arr.Cnt==1 {
return false
}
for i,j:=0,arr.Cnt-1;i<=j;i,j=i+1,j-1{
tmp:=(*arr.Pbase)[i]
(*arr.Pbase)[i]=(*arr.Pbase)[j]
(*arr.Pbase)[j]=tmp
}
return true
}
func main() {
var arr Arr
init_arr(&arr,6)
append_arr(&arr,8)
append_arr(&arr,7)
append_arr(&arr,6)
append_arr(&arr,5)
append_arr(&arr,9)
insert_arr(&arr,2,1)
show_arr(&arr)
sort_arr2(&arr)
show_arr(&arr)
}