排序算法

2021-01-07 00:29

阅读:578

标签:i++   str   排序   sele   return   shel   break   turn   port   

package main

import (
	"fmt"
	"strconv"
)

func main() {
	arr := []int{12, 34, 651, 3, 65, 1, 4}
	fmt.Println(arr)
	// 冒泡排序
	// value := bubble_sort(arr)
	// 选择排序
	// value := selection_sort(arr)
	// 插入排序
	// value := insertion_sort(arr)
	// 快速排序
	// value := quick_sort(arr)
	// 归并排序
	// value := merge_sort(arr)
	// 希尔排序
	// value := shell_sort(arr)
	// 计数排序
	// value := count_sort(arr)
	// 桶排序
	// 基数排序
	value := radix_sort(arr)
	fmt.Println(value)
}

// 冒泡排序
func bubble_sort(arr []int) []int {
	len := len(arr)
	for i := 0; i  arr[j+1] {
				arr[j], arr[j+1] = arr[j+1], arr[j]
			}
		}
	}
	return arr
}

// 选择排序
func selection_sort(arr []int) []int {
	len := len(arr)
	for i := 0; i  arr[j] {
				arr[i], arr[j] = arr[j], arr[i]
			}
		}
	}
	return arr
}

// 插入排序
func insertion_sort(arr []int) []int {
	len := len(arr)
	// fmt.Println(len)
	for i := 1; i = arr[j] {
					break
				}
				arr[j+1] = arr[j]
				j = j - 1
				if j  0 && len(right) > 0 {
		if left[0] > right[0] {
			res = append(res, right[0])
			right = right[1:]
		} else {
			res = append(res, left[0])
			left = left[1:]
		}
	}
	for len(left) > 0 {
		res = append(res, left[0])
		left = left[1:]
	}
	for len(right) > 0 {
		res = append(res, right[0])
		right = right[1:]
	}
	return res
}

// 希尔排序
func shell_sort(arr []int) []int {
	len := len(arr)
	f := 3
	h := 1
	for h = 1 {
		// fmt.Println("h = ", h)
		for i := h; i = h; j -= h {
				// fmt.Println("j = ", j)
				if arr[j]  max {
			max = arr[i]
		}
	}
	res := make([]int, max+1)
	// fmt.Println(res)
	for _, v := range arr {
		res[v] = res[v] + 1
	}
	NewArr := make([]int, 0)
	for k, v := range res {
		for i := 0; i  i {
				k := strV[lenV-i-1 : lenV-i]
				key, _ := strconv.Atoi(k)
				kl[key] = append(kl[key], v)
			} else {
				kl[0] = append(kl[0], v)
			}

		}
		// fmt.Println(kl)
		arr = arr[0:0]
		for k, v := range kl {
			arr = append(arr, v...)
			kl[k] = kl[k][0:0]
		}
	}

	return arr
}

  

排序算法

标签:i++   str   排序   sele   return   shel   break   turn   port   

原文地址:https://www.cnblogs.com/NjY2/p/12972883.html


评论


亲,登录后才可以留言!