- 博客(5)
- 收藏
- 关注
原创 快速排序
每次都找一个枢纽(下面代码用数组的最后一个),将它放到正确的位置,再把这个枢纽位置的俩边进行递归。func quickSort(arr []int, l, r int) { if l < r { mid := partionSort(arr, l, r) quickSort(arr, l, mid[0]-1) quickSort(arr, mid[0]+1, r) }...
2020-01-31 22:19:49 196
原创 荷兰国旗问题
问题一: 给定一个数组,和一个数num,把小于等于num的数放在数组的左边,大于num的数放在右边。使用一个指针(代码中为数组下标less)存储数组中小于num的区间,从-1开始。 使用另一个指针来遍历数组(代码中为index),遍历过程中将小于等于num的数归入左边区间,数组下标下移。func partion(arr []int, target int) { // 将小于等于targ...
2020-01-31 11:07:56 263
原创 由递归排序引申出的小和问题和逆序数对问题
递归排序的思想是将带牌列数组不断的拆成俩部分,再将有序的左右的俩部分合并。小和问题:在一个数组中,每一个数左边比当前小的数累加起来,叫做这个数组的小和。求一个数组的小和。逆序对问题,在一个数组中,打印出数组所有左边数大于右边数的组合。下面是归并排序的代码(go语言)// 写一个归并排序func mergeSort(arr *[]int, l, r int) { // 这部分是...
2020-01-30 18:02:12 233
原创 Golang俩个线程实现交替打印1和2 10次
一、一个进程写,一个进程读, 一个管道存数据, 一个管道进行退出控制。func main() { intChan := make(chan int, 20) exitChan := make(chan bool, 1) go func(intChan chan int){ for i:=0; i< 20; i++ { intChan<- (i%2 + 1)...
2020-01-10 22:39:46 1558
原创 管道channel 有无缓冲区的区别
如果没有缓冲区,单纯的往其中放入元素立马就会进入阻塞状态,必须有其他的线程从其中取走元素。通俗的讲要有一个线程不断的取这个管道的元素,才能往其中放入元素。它就像一个窄窄的门框,进去就得出来。 而有一个缓冲区的管道想一段地道,放入的元素不会马上进入阻塞状态,只有第二个准备进入而第一个还没有进入的情况下才会阻塞。没有缓冲区的管道示例:func main() { intChan := ma...
2020-01-10 17:32:00 848
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人