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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗文强 中级黑马   /  2015-12-4 00:02  /  1120 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>//预处理命令:文件包含
  2. void selectSort(int array[], int length);//声明
  3. void bubbleSort(int array[], int length);//声明

  4. int main()
  5. {
  6.     int array[] = {12, 8, 4, 11, 5, 20, 1};//定义一个数组并初始化
  7.     int length = sizeof(array)/sizeof(int);//数组元素个数

  8.     selectSort(array, length);//调用选择排序
  9.     bubbleSort(array, length);//调用冒泡排序
  10.     return 0;
  11. }

  12. void selectSort(int array[], int length)
  13. {
  14.     for (int x = 0; x < length; x++) {//第几轮排序
  15.         int tempIndexMax = x;//最大值的下标
  16.         for (int y = x+1; y < length; y++) {//当前这轮排序的具体实现
  17.             //从大到小排序
  18. //            if (array[y] > array[tempIndexMax]) {//array[y]是否大于先前的“最大值”
  19. //                tempIndexMax = y;//如果大于先前的“最大值”,改变“最大值”的下标
  20. //            }
  21.             //从小到大排序
  22.             if (array[y] < array[tempIndexMax]) {//array[y]是否小于先前的“最大值”
  23.                     tempIndexMax = y;//如果小于先前的“最大值”,改变“最大值”的下标
  24.             }
  25.         }
  26.         //把找到的最大值和之前的最大值互换
  27.         int temp = array[x];
  28.         array[x] = array[tempIndexMax];
  29.         array[tempIndexMax] = temp;
  30.     }
  31.     //遍历数组
  32.     for (int z = 0; z < length; z++) {
  33.         printf("%d\t", array[z]);
  34.     }
  35.     printf("\n");
  36. }

  37. void bubbleSort(int array[], int length)
  38. {
  39.     for (int x = 0; x < length-1; x++)
  40.     {
  41.     //每趟排序都会确定一个数,所以需要再循环len-x次,但因为每次都是相邻的两个数进行比较,为了array[y+1]不越界,让j循环到len-1-x时停止。
  42.         for (int y = 0; y < length-1-x; y++)
  43.         {
  44.             //从大到小排序
  45. //                if (array[y] < array[y+1])
  46. //            {
  47. //                    int temp = array[y+1];
  48. //                    array[y+1] = array[y];
  49. //                    array[y] = temp;
  50. //            }
  51.             //从小到大排序
  52.             if (array[y] > array[y+1])//如果条件满足,交换array[y]和a[y+1]两个相邻数的值
  53.             {
  54.                 int temp = array[y+1];
  55.                 array[y+1] = array[y];
  56.                 array[y] = temp;
  57.             }
  58.         }
  59.     }
  60.     //遍历数组
  61.     for (int z = 0; z < length; z++) {
  62.         printf("%d\t", array[z]);
  63.     }
  64.     printf("\n");
  65. }
复制代码
自己写的选择排序和冒泡排序。

9 个回复

倒序浏览
给你顶一个哈哥们
回复 使用道具 举报
6666  大神 牛逼!!
回复 使用道具 举报

给你顶一个哈哥们
回复 使用道具 举报
神呐
回复 使用道具 举报
写的不错~66666
回复 使用道具 举报
小强啊  哈哈哈
回复 使用道具 举报
Mr.Yan 中级黑马 2015-12-4 23:19:06
8#
巩固下子,还是不错.
回复 使用道具 举报
chensc 金牌黑马 2015-12-5 20:13:57
9#
学习学习!
回复 使用道具 举报
  牛逼 牛逼啊  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马