帮个忙啊,排序算法(快速,选择,冒泡)

来源:百度知道 编辑:UC知道 时间:2024/06/23 18:27:41
1用 快速,选择,冒泡法三种方法对N个数进行从大到小或从小到大排序,
2选择法和冒泡法有什么区别?
3比较以上排序方法的优劣.
1.要求用C++语言编程,在VISUAL C++环境下调试完成。
2.要求各个功能分别用函数来完成。
3.分析算法的时间复杂度和空间复杂性。
写出来的程序要有这种格式,(就是C++的格式):#include<iostream.h>
void main ()
{
}
中括号内有cin, cout .和要写的程序(包括各个要用到的功能函数,)

#include "stdio.h"
void quicksort(int data[], int low,int high)
{/*用快速排序方法数组元素data[low..high]作排序*/
int i,pivot,j;
if(low<high)/*以数组的第一个元素为基准进行划分*/
{
pivot=data[low];
i=low;
j=high;
while(i<j)/*从数组的两端交替地向中间扫描*/
{
while(i<j&&data[j]>=pivot)j--;
if(i<j) data[i++]=data[j];/*比枢轴元素小者移到低下标端*/
while(i<j&&data[i]<=pivot) i++;
if(i<j)data[j--]=data[i];/*比枢轴元素大者移到高下标端*/
}
data[i]=pivot;/*枢轴元素移到正确的位置*/
quicksort(data,low,i-1);/*对前半个子表递归排序*/
quicksort(data,i+1,high);/*对后半个子表递归排序*/
}
}
//选择排序
void selectsort(int data[], int n)
{
int i,j,k,temp;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++) if(data[j]<data[k]) k=j;
if(k!=i){
temp=data[i];data[i]=data[k];data[k]=temp;
}
}
}
//冒泡就不写了,连这个都不会就别玩了
void main()
{
int a[]={256,301,751