2007年6月20日星期三

选择排序 及冒泡排序

/**************************
选择排序 及冒泡排序
用选择排序对给定的数组排序
输入:一个可排序 数组A[0..n-1]
输出:非降序排序的数组A[0..n-1]
2007.04.25
********************************/
#include <iostream>
#include <iomanip>
using namespace std;
void SelectionSort(int *b,int n);
void BulleSort(int* c,int n);
void swap(int &,int &);
 
void main(){
int i;
int a[5]={3,1,6,2,5};
int b[5]={1,8,5,10,7};
 
SelectionSort(a,5);
BulleSort(b,5);
cout<<"数组a选择排序后输出为"<<endl;
for (i=0;i<5;i++)
  cout<<setw(4)<<a[i];
 
cout<<endl<<"数组b冒泡排序后输出为"<<endl;
for (i=0;i<5;i++)
  cout<<setw(4)<<b[i];
}
 

void SelectionSort(int* b,int n){//选择排序函数 非降序
int i,j;
for (i=0;i<n;i++){
  int min=i;
  for (j=i+1;j<n;j++)
   if(b[j]<b[min]) min=j;//先记下最小的数的下标
  swap(b[min],b[i]);
  
}
}
 
void BulleSort(int* b,int n){//冒泡排序函数  非降序
int i,j;
for (i=0;i<n-1;i++){
  for (j=0;j<n-1-i;j++)
   if(b[j+1]<b[j])  swap(b[j],b[j+1]);
}
}
 

  
void swap(int &p1,int &p2){//此处&号不能去掉
int temp;
temp=p1;p1=p2;p2=temp;
}

没有评论: