快速排序
递归式
#include<iostream>
#include<stack>
using namespace std;
int partition(int a[], int left, int right)
{
int tmp = a[left];
while(left < right)
{
while(a[right] >= tmp && left < right)
{
right--;
}
if(left < right)
{
a[left] = a[right];
}
while(a[left] <= tmp && left < right)
{
left++;
}
if(left < right)
{
a[right] = a[left];
}
}
a[left] = tmp;
return left;
}
void quickSort(int a[], int left, int right) {
int index;
if(left > right)
{
return;
}
index = partition(a, left, right);
quickSort(a, left, index - 1);
quickSort(a, index + 1, right);
}
int main()
{
int a[1000];
int n = 0;
while(cin>>n)
{
for(int i = 0; i < n; i++)
{
cin>>a[i];
}
if(n > 0)
{
quickSort(a, 0, n - 1);
for(int i = 0; i < n; i++)
{
cout<<a[i]<<' ';
}
}
cout<<endl;
}
return 0;
}
非递归式
void quickSort(int a[], int left, int right) {
if(left > right)
{
return;
}
stack<int> stack1;
stack1.push(right);
stack1.push(left);
while(stack1.size() > 0)
{
int i = stack1.top();
stack1.pop();
int j = stack1.top();
stack1.pop();
int index = partition(a, i, j);
if(i < index - 1)
{
stack1.push(index - 1);
stack1.push(i);
}
if(j > index + 1)
{
stack1.push(j);
stack1.push(index + 1);
}
}
}
栈、队列java实现2018-03-15 14:30:11
下压栈 特点 能动态调整数组大小的实现 实现 下压堆栈(链表实现) 先进先出队列 背包
剑指offer算法题——栈与队列2018-02-25 16:14:19
用两个栈实现队列 题目描述:用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 队列中的元素为 int 类型。