标题:数组排序 (冒泡法)
取消只看楼主
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
结帖率:100%
 问题点数:0 回复次数:1 
数组排序 (冒泡法)

/*
Name: 数组排序 (冒泡法)
Copyright:
Author:
Date: 14-10-07 15:04
Description:
*/
#include <iostream>
#include <vector>
#include <cstddef> //size_t
using namespace std;

class order
{
public:
void actSmallToBig(int int_arr[],const size_t arr_sz)
{
pa=int_arr;
sz=arr_sz;
for(size_t ix=0; ix!=arr_sz; ++ix)
for(size_t _ix=ix; _ix!=arr_sz; ++_ix)
if(int_arr[ix]>=int_arr[_ix]) //交换过程
{
temp=int_arr[ix];
int_arr[ix]=int_arr[_ix];
int_arr[_ix]=temp;
}
}
void actBigToSmall(int int_arr[],const size_t arr_sz)
{
pa=int_arr;
sz=arr_sz;
for(size_t ix=0; ix!=arr_sz; ++ix)
for(size_t _ix=ix; _ix!=arr_sz; ++_ix)
if(int_arr[ix]<=int_arr[_ix]) //和actSmallToBig不同是“<=“
{
temp=int_arr[ix];
int_arr[ix]=int_arr[_ix];
int_arr[_ix]=temp;
}
}
void show()
{
for(int *pbegin=pa,*pend=pa+sz; pbegin!=pend; ++pbegin)
{
cout<<*pbegin<<' ';
cout.flush();
}
}
order():temp(0) {}
private:
int *pa;
int temp;
size_t sz;
};

int main()
{
const size_t arrSize=10;
int arr[arrSize];
for(int *pbegin=arr,*pend=arr+arrSize; pbegin!=pend; ++pbegin)
{
int val;
cin>>val;
*pbegin=val;
}
order px;
px.actSmallToBig(arr,arrSize);
cout<<"从小到大排序后:"<<endl;
px.show();
cout<<endl;
px.actBigToSmall(arr,arrSize);
cout<<"从大到小排序后:"<<endl;
px.show();
cout<<endl;
system("pause");
return 0;
}
今天看到有人问怎么实现对任意多个数进行排序,这个只要把数组改成vector向量就行了.算法是一样的

搜索更多相关主题的帖子: 冒泡 include int arr vector 
2007-10-24 23:36
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
得分:0 
不用啊,你输入完了十个数就自动结束了。
心细的就可以看出来了。

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-10-26 16:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-180544-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.560177 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved