重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includeiostream
在五莲等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、网站建设 网站设计制作按需定制网站,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,成都外贸网站制作,五莲网站建设费用合理。
using namespace std;
void Sort(int a[],int n);
int main()
{
int i,n,a[1001];
cinn;
for(i=1;i=n;i++)
cina[i];
Sort(a,n);
for(i=1;i=n;i++)
couta[i]" ";
system("pause");
return 0;
}
void Sort(int a[],int n)
{
int i,j,x,flag;
for(i=1;i=n;i++)
{
flag=0;
for(j=1;j=n-i;j++)
if(a[j+1]a[j])
{
flag=1;
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
if(flag==0)
break;
}
}
【注意】上面那个数组下标是从1开始的,本人习惯从1开始
还有一种超好的排序方法,我一直用它:
#includeiostream
#includealgorithm
using namespace std;
int main()
{
int n,i,a[10001];
cinn;
for(i=1;i=n;i++)
cina[i];
sort(a+1,a+n+1);//默认是升序
for(i=1;i=n;i++)
couta[i]" ";
system("pause");
return 0;
}
冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。
1.这个算法用rand函数产生新的要排序的数据,与已有的有序数列中的数据依次比较,如果遇到比他大的数据,就从该数据开始,一直交换到末尾,达到一个插入的效果。从而形成有序的数列。
2.此外,只用rand函数并不能达到真正随机的效果。如果要实现真正随机的效果,还要配合srand函数才行。
3.具体代码如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("请输入一个种子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。
冒泡法排序函数如下:
void bubble(int a[],int n)
{int i,j,t;
for(i=0;in-1;i++)/*共进行n-1轮*/
for(j=0;jn-1-i;j++)/*每轮在前n-i个数中比较*/
if(a[j]a[j+1]) /*若相邻元素逆序*/
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/
}
void sort(int *a, int left, int right)
{
if(left = right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i j) /*控制在当组内寻找一遍*/
{
while(i j key = a[j])
/*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/
{
j--;/*向前寻找*/
}
a[i] = a[j];
/*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
a[left],那么就是给key)*/
while(i j key = a[i])
/*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
{
i++;
}
a[j] = a[i];
}
a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/
sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/
sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/
/*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
}
你说的嵌套定义和调用是什么意思?
2.应该是 swap 吧?假如你用的是局部变量,那函数调换的就是局部变量,这时传递进来的参数就没有被交换了。除了用全局变量,还可以用指针。
3.都是值传递,数组传递的是第一个元素的指针。