Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293376
  • 博文数量: 69
  • 博客积分: 2946
  • 博客等级: 少校
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-09 04:15
文章分类

全部博文(69)

文章存档

2013年(6)

2012年(16)

2011年(18)

2010年(29)

分类: C/C++

2010-04-09 04:24:03

确实,这个题目让我开始犯迷糊,好长时间没有写代码,现在感觉很生疏了。做这个题目时,错误百出,真是烦人啊,补补改改, 还是提交过了,还算幸运。
今晚打算通宵编程,不想睡觉了。唉,也不知道什么原因,我想写代码这个基本功还是要扎实点。还是老规矩,把代码贴出来,没什么太大的参考价值。

Code:

#include<iostream>
#include<cstdlib>
#define max 1000005
int array[max];
using namespace std ;
void swap(int *list,int n ,int m) //交换数列中哦的数字

{
int temp ;
temp = list[n];
list[n]=list[m];
list[m]=temp;
}
void QuickSort(int *list ,int left ,int right)
{
if(left<right) {
int ram =rand()%(right-left+1)+left;
int flag = list[ram]; //产生随机数,设置为标记

swap(list,ram,left);
int i = left ;
int j = right;
while(i<j) {
do i++;while(list[i]<=flag);
while(list[j]>flag) j--;
if(i<j) swap(list,i,j);
}
swap(list,left,j);
QuickSort(list,left,j-1);
QuickSort(list,j+1,right);
}
}
int main()
{
int number;
scanf("%d",&number);
for(int i=0;i<number;i++)
scanf("%d",&array[i]);
QuickSort(array,0,number-1);
for(int i=0;i<number;i++)
printf("%d ",array[i]);
printf("\n");
system("pause");
return 0 ;
}


阅读(874) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~