A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Nevergrowold

初级黑马

  • 黑马币:36

  • 帖子:17

  • 精华:0

本帖最后由 Nevergrowold 于 2016-5-23 14:12 编辑

如 有如下数组
    int arr[9]={13,41,2,47,7,24,8,10,33};
输出结果为 7        13        33        41        47        2        8        10        24
开始在网上看别人的代码,都是一大堆,很多我看不懂
下面是我的代码
  1. #include <stdio.h>
  2. void sort(int *a,int len){
  3.     int temp;
  4.     for (int i=0; i<len-1; i++) {
  5.         for (int j=0; j<len-1-i; j++) {
  6.             if (a[j]>a[j+1]) {
  7.                 temp=a[j];     //先冒泡排序从小到大
  8.                 a[j]=a[j+1];
  9.                 a[j+1]=temp;
  10.                
  11.             }if (((a[j]&1)==0)&&((a[j+1]&1)==1)) {
  12.                 temp=a[j];  //后奇偶交换,奇数在左边,偶数在右边
  13.                 a[j]=a[j+1];
  14.                 a[j+1]=temp;
  15.             }
  16.             
  17.         }
  18.         
  19.     }
  20. }


  21. int main(int argc, const char * argv[]) {
  22.     int arr[9]={13,41,2,47,7,24,8,10,33};
  23.     sort(arr,9);
  24.     for (int i=0; i<9; i++) {
  25.         printf("%d\t",arr[i]);
  26.     }
  27.     return 0;
  28. }
复制代码
功能实现了,不知道有没有错误。还有一个问题,我把奇偶性判断的条件写在前面,完了再写冒泡排序,结果是不对的。一直搞不懂是为什么,谁能解释一下



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马