冒泡排序法
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
For i = 1 To 3 用于比较的第一个数在数组中的顺序(每一个都要比较)
For j = i To 2 用于比较的第二个数在数组中的顺序(同样除了自已外每一个都要比较,不过前面的比较了就不用重复比较了)
If x(i) < x(j + 1) Then 假如第1个小于第2个数时
t = x(i)
x(i) = x(j + 1)
x(j + 1) = t 经典交换程序段,这段是用临时变量t存储要交换的两个数中的一个,然后交换两者,看多一点程序就会理解的,因为很常用
End If
Next j
Next i
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:
#include<stdioh>
int main()
{
int i,j,a[10],t;
printf("输入数");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++)
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("从大到小");
for (i = 0; i < 10; i++)
printf("%2d", a[i]);
return 0;
}
扩展资料:
代码还可以设计,如下:
#include<stdioh>
int main()
{
int a[10],i,j,t;//定义数组;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//给数组赋值;
}
for(i=0;i<9;i++)//10个数,进行9轮比较;
for(j=0;j<10-i;j++){//第一个数比较9次,依次递减;
if(a[j]>a[j+1]) {//交换值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++){
printf("%d\n",a[i]);//输出数组的值;
}
return 0;
}
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf("\n");
}
参考资料:
#include "stdioh"
#define N 10
int main(int argc,char argv[]){
int a[N],i,j,k;
printf("Please enter %d integer(s)\n",N);
for(i=0;i<N;scanf("%d",a+i++));//输入
for(i=0;i<N;i++){//选择法排序
for(k=i,j=k+1;j<N;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
j=a[k],a[k]=a[i],a[i]=j;
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
代码和运行样例:
就是全部代码都写进main函数呗?
#include <stdioh>#include <conioh>
#define LEN 100 /数组长度上限/
#define elemType int /元素类型/
int main (void) {
elemType arr[LEN];
int len;
elemType temp;
int i, j;
printf ("请输入数组元素个数:");
scanf ("%d",&len);
printf ("请输入包含%d个元素的数组:\n",len);
for (i=0; i<len; i++)
scanf ("%d",&arr[i]);
putchar ('\n');
puts ("排序后数组:");
/升序冒泡排序/
for (i=0; i<len-1; i++)
for (j=0;j<len-1-i; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (i=0; i<len; i++)
printf ("%d\t",arr[i]);
putchar ('\n');
getch (); /屏幕暂留/
free (arr);
return 0;
}
运行结果
void sort(int a[100])
{
int iA =0;
for(int i =0 ;i<100;i++)
{
for(int j =0;j<100 - i;j++)
if(a[i]>a[j])
{
iA =a[j];
a[j] = a[i];
a[i] = iA;
}
}
}
void sort(char a[26])
{
char cA;
for(int i =0 ;i<100;i++)
{
for(int j =0;j<100 - i;j++)
if(a[i]>a[j])
{
cA =a[j];
a[j] = a[i];
a[i] = cA;
}
}
}
void float(float[100])
{
float fA =0;
for(int i =0 ;i<100;i++)
{
for(int j =0;j<100 - i;j++)
if(a[i]>a[j])
{
iA =a[j];
a[j] = a[i];
a[i] = iA;
}
}
}
你给的排序程序有问题,我先帮你改好了(改动的地方见注释),然后根据改正后的程序给你解释排序原理
int i ,j;person temp;//这里preson temp后面加分号,并且preson拼错了应该是person
for(i=0;i<n-1;i++) //这里for(i=1;i<n;i++)改成for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)//这里for(j=0;j<=n-1-i;j++)改成for(j=0;j<n-1-i;j++)
if(all[j]salary>all[j+1]salary)//这里if(all[i]salary>all[j+1]salary)改成if(all[j]salary>all[j+1]salary)
{
temp=all[j];
all[j]=all[j+1];
all[j+1]=temp;
}
}上面是把n个人的薪金按从小到大排序的程序,用的是冒泡排序算法,冒泡排序算法的原理是把一个无序的数组,
1两个相邻的数组元素比较,如果第一个比第二个大,就交换他们两个
2对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,这样最后一个元素就是最大的数
3重复上述步骤,除了最后一个,
4持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
对于你的程序,第一个for-i循环是表示这个排序要循环多少次,也就是要走多少趟
第二个for-j循环表示每一趟要判断多少次
比如n=5时
当i=0时第一趟 第二个for-j循环为for(j=0;j<5-1-0;j++)表示从数组0和1到3和4要判断4次,最大的数放在all[4]salary中
当i=1时第二趟 第二个for-j循环为for(j=0;j<5-1-1;j++)表示从数组0和1到2和3要判断3次,次大的数放在all[3]salary中
当i=2时第三趟 第二个for-j循环为for(j=0;j<5-1-2;j++)表示从数组0和1到1和2要判断2次,第三大的数放在all[2]salary中
当i=3时第四趟 第二个for-j循环为for(j=0;j<5-1-3;j++)表示数组0和1要判断1次,次小的数放在all[1]salary中,最小的数放在all[0]salary中
因为i=4时for-j循环为for(j=0;j<5-1-4;j++)所以结束for-j循环
又因为i=4时for-i循环为for(i=0;i<5-1;i++)所以当i=4时跳出for-i循环结束排序
这样就得到从小到大排好序的数组了
最后一行 printf("%d ",a[i]); 后面应该有个“}”才对这个程序是对的,在a[11]这个数组里只有a[0]~a[9]这10个元素第一个for循环与第二个for循环构成嵌套,第一次循环结束找出a[0]~a[9]里最大的数,第二次结束找出a[1~a[9]]里最大的数,第三次找出a[2]~a[9]里最大的数,……这样依次类推,其实就是一个选择排序!程序中变量 p q 交替记录最大数的下标和最大数的值。这并不是一个难懂的程序,有一定基础的应该都能弄懂的。或者你回去看看有关选择排序的程序实例。这只是大致的内容,别的不需要多讲应该可以看明白的。
编写程序,从键盘输入两个双精度实数a和b,要求两个数按照升序排序,以下是用C++语言实现的代码段:
double a,b,t;
cin>>a>>b;
if(a>b){t=a; a=b; b=t;}
cout<<a<<" "<<b<<endl;
以上就是关于VB FOR循环及排序全部的内容,包括:VB FOR循环及排序、如何用c语言编写一个程序,实现按从大到小的顺序排序输出10个数、用c语言编程:键盘上输入N个整数,使该数组中的数按照从小到大的次序排列(选择法排序)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)