关于冒泡法排序和选择排序(转帖)

来源:互联网 发布:java获取本地文件路径 编辑:程序博客网 时间:2024/05/22 18:55

一。排序算法思想:   
            采用2轮循环,外循环是有序后的元素遍历,内循环用于寻找最值。   
    假设最小元素在数组的第0个位置上,从数组的第一个元素开始遍历数组,找出最小的元素   
    分别和数组的第0个位置上的元素分别比较,如果该元素小于第0个元素,则交换该元素,   
    则交换后该元素就是有序的。说的通俗一点就是:每次选择剩余数据中的最值调整到有序   
    部分的后面去。   
  实现如下:   
  #include   <iostream>   
  using   namespace   std;   
    
  void   select_sort(int   *,int);   
  int   main()   
  {   
  int   a[]   =   {12,3,4,56,7,8,9,45,11};   
  const   int   size   =   sizeof(a)/sizeof(a[0]);   
  select_sort(a,size);   
  for(int   i   =   0;i<size;i++)   
  {   
  cout<<a[i]<<"   ";   
  }   
  cout<<endl;   
    
  return   0;   
  }   
  void   select_sort(int   *arr,int   num)   
  {   
  int   i,j,temp;   
  for(   i   =   0;i<num;i++)   
  {   
  for(   j=   i+1;j<num;j++)   
  {   
  if(arr[i]>arr[j])   
  {   
  temp   =   arr[j];   
  arr[j]   =   arr[i];   
  arr[i]   =   temp;   
  }   
  }   
  }   
  }   
      
  */   
    
  /*   
  二。冒泡法排序算法思想:   
          程序采用2轮循环,外循环遍历要排序的元素,内循环用于挑选出最值。   
  内循环用于将相邻的两个元素进行比较,将小的元素调到大元素的前头。。   
  内循环的循环次数表示相邻元素的交换趟数。   
  实现如下:   
  #include   <iostream>   
  using   namespace   std;   
    
  void   bubble_sort(int   *,int);   
  int   main()   
  {   
          int   a[]   =   {7,6,5,4,3,2,1};   
  const   int   size   =   sizeof(a)/sizeof/a[0];   
  bubble_sort(a,size);   
  for(int   i=0;i<size;i++)   
  {   
          cout<<a[i]<<"   ";     
  }   
  cout<<endl;   
  }   
  void   bubble_sort(int   *a,int   num)   
  {   
            int   i,j,temp;   
    for(i   =   0;i<num;i++)   
    {   
            for(j=   0;j<num-j;j++)   
    {   
            if(a[j]>a[j+1])   
    {   
          temp   =   a[j+1];   
  a[j+1]   =   a[j];   
  a[j]   =   temp;   
    }   
    }   
    }   
  }   
  */   
  /*   
  两种排序算法总结:   
  一。都用了两轮循环,外循环均用于遍历要排序的元素。   
  二。内循环主要用于筛选最值,内循环实现的关键是循环初值的设定和循环条件的安排。   
  三。空间复杂度和时间复杂度???     
  */