//file 选择排序.cpp
//选择排序法的基本思想:
// 假设有n个数据放在数组a中,现要把这n个数从小到大排序。
// 首先,在a[0]到a[n-1]的范围内,选出值小元素与a[0]交换;
// 然后在a[1]到a[n-1]的范围内再选出值最小的元素与a[1]交换;
// 依次进行下去,进行n-1次选择后就可完成排序。
#include"iostream.h"
void xuanze_sort(int a[],int len)
{
cout<<"/n/n正在选择排序:/n";
for(int i=0;i<len-1;i++){ //最好和最坏情况下都要进行len-1次选择
int k=i; //准备选择第i个位置的元素,k初始为i
for(int j=i+1;j<len;j++)
if(a[k]>a[j])
k=j; //k指示当前最小值元素的位置,
//for结束后,k指示从a[i]到a[len-1]最小元素的下标
if(k!=i){ //需要交换a[i]和a[k];也许k==i,意思为:原来的a[i]
int temp=a[i]; //就是a[i]到a[len-1]间的最小值,k没有被修改,
//保持其初始化值i
a[i]=a[k];
a[k]=temp;
}
//输出经本次选择后的排序结果,用“|”号作为排好序元素和未排好序元素的分隔号
for(int m=0;m<len;m++){
if(m==i)
cout<<a[m]<<"| ";
else
cout<<a[m]<<" ";
}
cout<<endl;
}//end of for
}
void main(void)
{
int b[]={9,8,-17,6,5,-4,3,2,1,0};
int lenofb=sizeof(b)/sizeof(int);
cout<<"before sort:/n";
for(int i=0;i<lenofb;i++)
cout<<b[i]<<" ";
xuanze_sort(b,lenofb);
cout<<"/nafter sort:/n";
for(i=0;i<lenofb;i++)
cout<<b[i]<<" ";
cout<<endl;
}
//file 选择排序的变形1.cpp
//选择排序法的基本思想:
// 假设有n个数据放在数组a中,现要把这n个数从小到大排序。
// 首先,在a[0]到a[n-1]的范围内,选出值小元素与a[0]交换;
// 然后在a[1]到a[n-1]的范围内再选出值最小的元素与a[1]交换;
// 依次进行下去,进行n-1次选择后就可完成排序。
#include"iostream.h"
void main(void)
{
int b[]={9,8,-17,6,5,-4,3,2,1,0};
int len=sizeof(b)/sizeof(int);
cout<<"before sort:/n";
for(int i=0;i<len;i++)
cout<<b[i]<<" ";
cout<<"/n/n正在选择排序:/n";
for(i=0;i<len-1;i++){ //最好和最坏情况下都要进行len-1次选择
int k=i; //准备选择第i个位置的元素,k初始为i
for(int j=i+1;j<len;j++)
if(b[k]>b[j])
k=j; //k指示当前最小值元素的位置,
//for结束后,k指示从a[i]到a[len-1]最小元素的下标
if(k!=i){ //需要交换a[i]和a[k];也许k==i,意思为:原来的a[i]
int temp=b[i]; //就是a[i]到a[len-1]间的最小值,k没有被修改,
//保持其初始化值i
b[i]=b[k];
b[k]=temp;
}
//输出经本次选择后的排序结果,用“|”号作为排好序元素和未排好序元素的分隔号
for(int m=0;m<len;m++){
if(m==i)
cout<<b[m]<<"| ";
else
cout<<b[m]<<" ";
}
cout<<endl;
}//end of outer for
cout<<"/nafter sort:/n";
for(i=0;i<len;i++)
cout<<b[i]<<" ";
cout<<endl;
}
//file 选择排序的变形2.cpp
//选择排序法的基本思想:
// 假设有n个数据放在数组a中,现要把这n个数从小到大排序。
// 首先,在a[0]到a[n-1]的范围内,选出值小元素与a[0]交换;
// 然后在a[1]到a[n-1]的范围内再选出值最小的元素与a[1]交换;
// 依次进行下去,进行n-1次选择后就可完成排序。
#include"iostream.h"
void main(void)
{
int b[]={9,8,-17,6,5,-4,3,2,1,0};
int len=sizeof(b)/sizeof(int);
cout<<"before sort:/n";
for(int i=0;i<len;i++)
cout<<b[i]<<" ";
cout<<"/n/n正在选择排序:/n";
for(i=0;i<len-1;i++){ //最好和最坏情况下都要进行len-1次选择
for(int j=i+1;j<len;j++)
if(b[i]>b[j]){
int k=b[i];b[i]=b[j];b[j]=k;
}
//输出经本次选择后的排序结果,用“|”号作为排好序元素和未排好序元素的分隔号
for(int m=0;m<len;m++){
if(m==i)
cout<<b[m]<<"| ";
else
cout<<b[m]<<" ";
}
cout<<endl;
}//end of outer for
cout<<"/nafter sort:/n";
for(i=0;i<len;i++)
cout<<b[i]<<" ";
cout<<endl;
}

6467

被折叠的 条评论
为什么被折叠?



