FGFGFGISMEN
TIKITAKA.
采纳率60.9%
2021-02-26 12:23

我这冒泡排序错在哪?

已采纳

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • cxd1314520 岑小岑 2月前

    错误:for(j=1; j<N; j++) 改成:for(j=i; j<N;j++)

    	for (i = 0; i < N-1; i++) 
    	{
    		for (j = i; j < N; j++) 
    		{
    			if (a[j] < a[i])
    			{
    				temp = a[i];
    				a[i] = a[j];
    				a[j] = temp;
    			}
    		}
    	}
    点赞 1 评论 复制链接分享
  • qq_25376897 qq_25376897 2月前
    #include<iostream>
    using namespace std;
    #define N 4
    int main(){
    	int i,j,temp,a[N];
    	for(int i=0;i<N;i++)
    	    cin>>a[i];
    	for(i=0;i<N-1;i++){
    	    for(j=1;j<N-i;j++)
    	        if(a[j-1]>a[j]){//如果前面大于后面,交换
    	            temp = a[j-1];
    	            a[j-1] = a[j];
    	            a[j] = temp;
    	        }
    	    
    	}
    	for(i=0;i<N;i++)
    	    cout<<a[i]<<endl;
    
    	return 0;
    }
    点赞 1 评论 复制链接分享
  • weixin_42910064 泡视界 2月前

    ……错在 用a[i] 和 a[j]交换

    你得用前一个书和当前数比较,而不是用 第 i 和 j 个数比较

    for (i = 0; i < N - 1; i++) 
    {
    	for (j = 1; j < N - i; j++) {
    		if (a[j - 1] > a[j])
    		{
    			temp = a[j];
    			a[j] = a[j - 1];
    			a[j - 1] = temp;
    		}
    	}
    }
    点赞 1 评论 复制链接分享

为你推荐