双栈排序练习
来源:互联网 发布:玄机科技工资 知乎 编辑:程序博客网 时间:2024/06/07 20:15
题目:
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。
/*
解题思路:遍历数组,如果集合为空,则把数组中的元素直接加入到数组中,如果集合末尾的元素大于数组的元素,则直接将数组元素加入集合中,
如果集合末尾的元素大于数组元素,则遍历集合找到小于数组的那个元素,并且在那个元素的后一位添加数组元素
*/
public ArrayList<Integer> twoStacksSort(int[] numbers) {
ArrayList<Integer> array=new ArrayList<Integer>();int index=-1;//用于标记最末尾的那个位置,该位置上的数是最小的
for(int i=0;i<numbers.length;i++){
if(array.size()==0||array==null){
array.add(numbers[i]);
index++;
}else if(array.get(index)>numbers[i]){
array.add(numbers[i]);
index++;
}else{
int j=index;
while(j>=0){
if(array.get(j)>numbers[i]){
array.add(j+1,numbers[i]);//这里需要从j+1开始
break;
}
j--;
}
if(j<0){
array.add(0,numbers[i]);
}
index++;//注意这里需要加1
}
}//for
return array;
}
阅读全文
0 0
- 双栈排序练习
- 双栈排序练习
- 图论练习2:双栈排序
- 练习排序
- 排序练习
- 数字雨+大数加法+割圆术求π+冒泡排序+快速排序+栈练习+链表练习
- 排序练习(归并排序)
- c++ 选择排序 练习
- 数据结构练习:排序
- 数据结构练习:排序
- 数据结构练习:快速排序
- [算法练习] 冒泡排序
- jquery排序 练习
- 直接插入排序 练习
- 折半插入排序 练习
- 简单选择排序练习
- 冒泡排序练习
- 内部排序算法练习
- androidstudio打包不同版本的apk
- 128. Longest Consecutive Sequence
- tcp协议系列文章(6):send
- 虚拟地址与物理地址怎么映射
- JDBC的简单介绍
- 双栈排序练习
- java maven项目右键没有maven菜单问题
- 从斗鱼顶级女主播来思考直播间画面的布局
- Mob分享的填坑
- 学习SpringMVC——从HelloWorld开始
- 读者写者模型
- 搜狗浏览器F5,ctrl+F等快捷键不起作用的解决
- 3Dmax 中alt+x半透不起作用
- 安全测试APP是否开启了远程备份功能