黑马程序员技术交流社区

标题: c学习中的疑惑 [打印本页]

作者: JAH562    时间: 2014-10-23 10:18
标题: c学习中的疑惑
#include <stdio.h>
test3(){
        //排序便利数组 从小到大排
        int num[4]={3,2,4,1};
        int i,temp;
       
        for(i=0;i<4;i++){
                if(num[i]>num[i+1]){
                temp=num[i+1];
                num[i+1]=num[i];
                num[i]=temp;       
               
                       
                        }
               
                printf("%d\n",num[i]);
               
               
                }
       
       
       
        }





int main(){
        test3();
       
        return 0;
       
        }
打印出来的怎么是:2,3,1,4
怎么没有排序出来  那有 出问题了  求 大神?
作者: Beacon    时间: 2014-10-23 10:29
你这样肯定是排不了序的! 为什么呢  你一步一步跟一下程序你会发现,第一步你会实现2和3的交换 然后i++ 现在num=3 num[i+1]=4 程序条件不满足 执行i++ 然后现在num=4 num[i+1]=1 然后两者交换 就输出了2 3 1 4。如果要想排序 有很多方法 冒泡 选择 快排之类的 都很方便。我用快速排序给你写了一个例子 自己领悟下喔。
  1. void sort(int arr[], int l, int r)
  2. {
  3.         int i = l;
  4.         int j = r;
  5.         int x = arr[i];
  6.         if(l < r)
  7.         {
  8.                 while(i < j)
  9.                 {
  10.                         while((i<j) && (arr[j]>x))
  11.                                 j--;
  12.                         arr[i] = arr[j];
  13.                         while((i<j) && (arr[i]<x))
  14.                                 i++;
  15.                         arr[j] = arr[i];
  16.                 }
  17.                 arr[i] = x;
  18.                 sort(arr, l, i-1);
  19.                 sort(arr, i+1, r);
  20.         }
  21.         else
  22.                 return;
  23. }

  24. int main()     //快速排序
  25. {
  26.         int i;
  27.         int arr[4] = {3,2,4,1};
  28.         sort(arr, 0, 3);
  29.         for(i = 0; i < 4; i++)
  30.                 printf("%d ", arr[i]);
  31.         printf("\n");
  32.         return 0;
  33. }
复制代码

作者: monterr    时间: 2014-10-23 10:55
好东西,留存
作者: zhao190109    时间: 2014-10-23 11:35
顶一个,加油还在战斗中的兄弟




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2