如何在C中的选择排序中打印每个迭代?

时间:2016-03-20 11:48:49

标签: c sorting selection-sort

我是一个尝试学习C的新手,我需要使用选择排序对数组进行排序。我还需要在算法进展时显示每次迭代。但我似乎无法使下面的代码工作。它在执行排序迭代部分的显示时抛出随机垃圾数量(请参见图片)。我已经搜索了很多,但仍然无法确定这个错误的原因。请帮忙。 Program execution

#include<stdio.h>
int main()
{

int s,i,j,t,temp,a[20];
printf("Enter the number of elements in the array\n");
scanf("%d",&s);

for(i=0;i<s;i++)
    {
      printf("Enter element %d\n",i+1);
      scanf("%d",&a[i]);
    }

printf ("Selection sort.\narray before sorting:\n");
for (i=0;i<s;i++)
    printf ("%d ",a[i]);

printf ("\n");

for(i=0;i<s;i++)
    {
      printf ("After iteration %d\n", i+1);
      for(j=i+1;j<s;j++)
        {
           if(a[i]>a[j])
               {
                 temp=a[i];
                 a[i]=a[j];
                 a[j]=temp;
               }
         }
      for (t=0;t<s;t++);
          printf ("%d ",a[t]);
      printf ("\n");
    }

printf("Array after sorting:\n");
for(i=0;i<s;i++)
    printf ("%d ",a[i]);

return 0;
}

1 个答案:

答案 0 :(得分:2)

你的问题是这一行: var error=0; var fname=$("input[name=fname]").val(); var lname=$("input[name=lname]").val(); var email=$("input[name=email]").val(); var pwd=$("input[name=pwd]").val(); var confirmpwd=$("input[name=confirmpwd]").val(); var tel=$("input[name=tel]").val(); var mobile=$("input[name=mobile]").val(); var postalcode=$("input[name=postalcode]").val(); var address=$("textarea[name=address]").val(); var state=$("#statediv option:selected").val(); var city=$("#citydiv option:selected").val(); var captcha=$("input[name=captcha]").val(); if( fname=='' ){ error=1; $("#fnameErr").html('لطفا نام خود را وارد کنید.'); $("input[name=fname]").addClass('red'); } else{ $("#fnameErr").hide(); $("input[name=fname]").removeClass('red'); } if( lname=='' ){ error=1; $("#lnameErr").html('لطفا نام خانوادگی خود را وارد کنید.'); $("input[name=lname]").addClass('red'); } else{ $("#lnameErr").hide(); $("input[name=lname]").removeClass('red'); } var regexp=/^[a-z0-9_\.-]+@{1}[a-z0-9_\.-]+\.[a-z]{2,5}$/i; if(regexp.test(email)==false){error=1; $("#emailErr").html('لطفا ایمیل خود را به درستی وارد کنید.'); $("input[name=email]").addClass('red'); } else{ $("#emailErr").hide(); $("input[name=email]").removeClass('red'); } regexp=/.{5,}/i; if(regexp.test(pwd)==false){error=1; $("#pwdErr").html('لطفا رمز عبور خود را به درستی وارد کنید.'); $("input[name=pwd]").addClass('red'); } else{if(pwd!=confirmpwd){error=1; $("#confirmpwdErr").html('تکرار رمز عبور نادرست است.'); $("input[name=confirmpwd]").addClass('red'); } else{$("#confirmpwdErr").hide(); $("input[name=confirmpwd]").removeClass('red'); $("#pwdErr").hide(); $("input[name=pwd]").removeClass('red');} } regexp=/^0{1}[0-9]{10,12}$/i; if(regexp.test(tel)==false){error=1; $("#telErr").html('لطفا شماره ثابت خود را به درستی وارد کنید.'); $("input[name=tel]").addClass('red'); } else{ $("#telErr").hide(); $("input[name=tel]").removeClass('red'); } regexp=/^0{1}9{1}[0-9]{9}$/i; if(regexp.test(mobile)==false){error=1; $("#mobErr").html('لطفا شماره همراه خود را به درستی وارد کنید.'); $("input[name=mobile]").addClass('red'); } else{ $("#mobErr").hide(); $("input[name=mobile]").removeClass('red'); } regexp=/^[0-9]{10}$/i; if(regexp.test(postalcode)==false){error=1; $("#postalcodeErr").html('لطفا کد پستی خود را به درستی وارد کنید.'); $("input[name=postalcode]").addClass('red'); } else{ $("#postalcodeErr").hide(); $("input[name=postalcode]").removeClass('red'); } if( address=='' ){ error=1; $("#addressErr").html('لطفا آدرس خود را وارد کنید.'); $("textarea[name=address]").addClass('red'); } else{ $("#addressErr").hide(); $("textarea[name=address]").removeClass('red'); } if(state==0){error=1; $("#stateErr").html('لطفا استان خود را وارد کنید.'); $("#statediv").addClass('red');} else{ $("#stateErr").hide(); $("#statediv").removeClass('red'); } if(city==0){error=1; $("#cityErr").html('لطفا شهر خود را وارد کنید.'); $("#citydiv").addClass('red');} else{ $("#cityErr").hide(); $("#citydiv").removeClass('red'); } if(error==0){ $.ajax({ url:'checkcaptcha.php', type:'post', async:false, data:{captcha:captcha} }) .done(function(msg){ if(msg==1){ error=1; $("#captchaErr").html('لطفا عبارت درست را وارد کنید.'); $("input[name=captcha]").addClass('red'); } else{ $("#captchaErr").hide(); $("input[name=captcha]").removeClass('red'); } }) } if(error==0){ $.ajax({ url:'checkmobile.php', type:'post', data:{mobile:mobile} }) .done(function(msg){ if(msg==1){ error=1; alert('این شماره موبایل قبلا ثبت شده است!'); $("input[name=mobile]").addClass('red'); } else{ $("input[name=mobile]").removeClass('red'); } }) } if(error==0){ $.ajax({ url:'checkemail.php', type:'post', data:{email:email} }) .done(function(msg){ if(msg==1){ error=1; alert('این ایمیل قبلا ثبت شده است!'); $("input[name=email]").addClass('red'); } else{ $("input[name=email]").removeClass('red'); } }) } if(error=1){ return false; } return true; } 将该行结束为for (t=0;t<s;t++);意味着t将计数到s而不进行任何工作,并且在该循环之后将使用未初始化的值;打印一行。