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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rzx 中级黑马   /  2015-11-3 21:28  /  1134 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求冒泡排序法和选择排序法才能牢牢记住  求各位大神解救!!!!

12 个回复

倒序浏览
支持一下!
回复 使用道具 举报
本帖最后由 Mu。 于 2015-11-4 17:54 编辑

#include <stdio.h>  int maoPao(int arr[],int len){                                  int temp;     
                       //双重循环   
         for (int i = 0; i < len-1; i++) {               
                   //因为i的值没变化一次,跑了一趟,按照冒泡思想        
                   //有一个数已经下沉了      
                  //没有必要和已经有序的数组进行比较了                  
          for (int j = 0; j < len-1-i; j++) {                          
                    //交换a[j] 和 a[j+1]的值            
                    if (arr[j] > arr[j+1]) {                                 
                            temp = arr[j];               
                            arr[j] = arr[j+1];                 
                             arr[j+1] = temp;               
                 }                     
           }           
     }         
      return 0;
}
int main(int argc, const char * argv[]) {      
                int a[10]={1,200,23,45,12,34,19,4,388,63};         
                 //排序之前的        
    for (int i = 0; i < 10; i++) {               
                 printf("%d\t",a);            
}          printf("\n");         
     //进行排序         maoPao(a, 10);
    //把数组已经排完序         
    //遍历数组     for (int i = 0; i < 10; i++) {               
                   printf("%d\t",a);         
     }         
             printf("\n");        
  return 0;
}


回复 使用道具 举报
我帖子里有冒泡法的程序,选择排序没有写
回复 使用道具 举报
#include <stdio.h>
void maoPao (int arr[],int len){
   
    int temp ;        //  0 1 2 3 4 5 6 7 8 9
   
    for( int i=0; i<len-1; i++){
        
        for(int j=0; j<len-1-i; j++){
            
            if(arr[j]>arr[j+1]){
               
                // 交换a[j]和a[j+1]的值
               
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
            
        }
     }
}
int main(int argc, const char * argv[]) {
   
    int a[10]={43,87,545,641,567,12,32,43,500,94};
   
    // 排序前
   
    for (int i=0; i<10; i++) {
        
        
        printf("%d\t",a[i]);
    }
   
    printf("\n");
   
    // 进行排序
   
    maoPao(a,10 );// 把数已经排序玩了
    // 遍历数组
    for(int i=0; i<10; i++){
        
        printf("%d\t",a[i]);
        
    }
    return 0;
}
回复 使用道具 举报
自己想想冒泡和选择的区别就行了
回复 使用道具 举报
一个是先把最小的数依次排到右边,一个是把最大的数找出来,将它的值和第一个数的值交换,然后依次,思想很牛的。
回复 使用道具 举报
建议理解记忆,冒泡就是各个相邻的元素相互比较,选择就是一个元素与与其它所有元素比较。每循环一次,都会有一个元素排好位置。
回复 使用道具 举报
对于这两个排序,我也纠结了好久怎么才能记住,后来发现最主要的还是理解这两个排序的思想。然后有了思路一切都好说。
回复 使用道具 举报
思路最重要
回复 使用道具 举报
思想很重要,记住了思想,代码实现起来就很容易啦
回复 使用道具 举报
正在学习选择排序
回复 使用道具 举报
方法 sort();  就ok!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马