Manchester


私信TA

用户名:wenyajie

访问量:136547

签 名:

最近有点忙,大家的评论等这阵子忙完一定会一个一个回复

等  级
排  名 1
经  验 32842
参赛次数 1
文章发表 167
年  龄 0
在职情况 学生
学  校 Qing Dao University
专  业 计算机科学

  自我简介:

最近有点忙,大家的评论等这阵子忙完一定会一个一个回复

解题思路:

①:从第一个数开始,每一个数依次与它后面一个数比较,比它后面的大,则交换

②:n个数,排序n-1趟(当序列逆序的时候)

③:若在一趟遍历中没有发生交换,即序列有序,则直接跳出循环,后面的趟数不再进行

④:如

1):序列:5  4  3  2  1 

2):第一趟排序结果为:4  3  2  1  5

3):第二趟排序结果为:3  2  1  4  5

4):第三趟排序结果为:2  1  3  4  5

5):第四趟排序结果为:1  2  3  4  5


知识补充:

1):冒泡排序的每一趟排序,元素都能到达最终位置

2):其排序趟数与初始序列的排列顺序有关

3):比较次数也与初始序列排列顺序有关

3):冒泡排序是一个稳定排序

4):最坏时间复杂度为o(n^2),最好为o(n)


参考代码:

#include<stdio.h>
#include<malloc.h>
void maoSort(int R[],int n);
void print_(int R[],int n);

int main()
{

    int n=4;/*序列长度为4*/
    /*为数组开辟空间*/
    int *R=(int *)malloc(n*sizeof(int));

     while(scanf("%d",&R[0])!=EOF)
     {
         /*输入数据*/
         for(int i=1;i<n;i++)
            scanf("%d",&R[i]);
            /*用冒泡排序*/
         maoSort(R,n);
         /*输出排序结果*/
         print_(R,n);
         free(R);
     }
     return 0;
}
/*==================================================*/
void maoSort(int R[],int n)
{
    int p=0;/*用于一次遍历中是否发生交换*/
    int term;
    for(int i=0;i<n-1;i++)
        {
            p=0;
            for(int j=0;j<n-i-1;j++)
            {
                if(R[j]>R[j+1])
                {
                    /*进行交换*/
                    term=R[j];
                    R[j]=R[j+1];
                    R[j+1]=term;
                    /*交换标志置1*/
                    p=1;
                }
            }
            /*如果没发生交换,说明序列有序,直接跳出循环*/
            if(p==0)
                break;
        }
}
/*==================================================*/
void print_(int R[],int n)
{
    for(int i=0;i<n-1;i++)
        printf("%d ",R[i]);
    printf("%d\n",R[n-1]);
}

别忘点赞哦-.-

 

0.0分

11 人评分

  评论区

#include<stdio.h>
int main()
{
	int a[4],i,j,t;
	for(i=0;i<4;i++)
	scanf("%d",&a[i]);
	for(i=0;i<4;i++)
		for(j=0;j<3-i;j++)
		{
			if(a[j]>a[j+1])
			{
			t=a[j];
			a[j]=a[j+1];
			a[j+1]=t;
			}
			else if(a[j]<a[j+1])
			a[j]=a[j];
		}
	for(i=0;i<4;i++)
	printf("%d ",a[i]);
	printf("\n");
	return 0;
}
2019-03-02 12:33:43 | |
malloc要free。
2018-12-29 09:17:53 | |
  • «
  • 1
  • »