划分一个整形数组,把负数放在左边,零放在中间,正数放在右边
来源:互联网 发布:手机直播录制软件 编辑:程序博客网 时间:2024/05/15 20:04
原理和快速排序类似,只是不需要确定每个元素的顺序,只需要确定每个区域的位置。
func main() { // 问题描述:划分一个整形数组,把负数放在左边,零放在中间,正数放在右边 arr := []int{0, 2, 4, 3, 1, 0, -3, -1, -2} fmt.Printf("原数组: %v \n", arr) low := 0 // 负数区域,指向负数区域后的第一个位置 mid := 0 // 0区域,指向0区域后的第一个位置,也是当前遍历位置 hig := len(arr) - 1 // 正数区域,指向区域前的第一个位置 for mid <= hig { // 当行进到正数区域前停止 cur := arr[mid] if cur < 0 { // 当前元素添加到负数区域并向前进一格 arr[mid], arr[low] = arr[low], arr[mid] // 有可能和自身交换 mid++ low++ } else if cur == 0 { mid++ } else { // 加入到正数区域,mid不减一,因为arr[hig]并不知道是属于哪个区域 arr[mid], arr[hig] = arr[hig], arr[mid] hig-- } } fmt.Printf("结果: %v \n", arr)}
执行结果:
原数组: [0 2 4 3 1 0 -3 -1 -2] 结果: [-2 -1 -3 0 0 1 3 4 2]
0 0
- 划分一个整形数组,把负数放在左边,零放在中间,正数放在右边
- 正数放右边,负数放左边 —— java
- java数组中,然后把奇数放在数组的左边,偶数放在右边,方法一
- java数组中,然后把奇数放在数组的左边,偶数放在右边,方法二
- 将所给数组中的负数安排在左边,零安排在中间,正数安排在右边
- 将一个数列中的奇数放在左边,偶数放在右边
- 如何在按钮中把文字放左边,图片放右边
- 如何在按钮中把文字放左边,图片放右边
- iOS自定义Button如何在按钮中把文字放左边,图片放右边
- 能实现把一个数组元素中的奇数放左边,偶数放右边
- 冒泡排序的方式实现一组数据偶数放在左边奇数放在右边
- 给我放在中间
- 给定一个无序数组,请调整该数组,调整成奇数放在数组的左边,偶数放在数组的右边。但是奇数与奇数之间的相对顺序不变,偶数和偶数之间的相对顺序也不变。
- 把Dialog放在一个控件下面
- 已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。
- 把奇/偶数(或某种特征的数)都放在数组左边问题
- 编一个程序,输入10个整数,并放在数组中,先降序输出所有的数,再统计并输出其中正数、负数和零的个数
- 使用CSS把Div放在屏幕中间。
- 【Java】ArraytList [2]
- 内存映射
- 【分布式版本控制Git】(一)Git的搭建
- swift1 > start
- 互联网人如何拓展自己的人脉
- 划分一个整形数组,把负数放在左边,零放在中间,正数放在右边
- vs2008编译console程序,运行时不显示console画面
- ExtJs-3.4引入的基本文件
- 简单的幻灯效果
- java继承初始化顺序
- Linux网络编程14——tcp、udp迭代服务器
- 内存分配函数详解
- Android 轻松实现网络交互模板
- 潜在语义索引(Latent Semantic Indexing)