码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序 & 选择排序(升序)

时间:2019-03-22 00:35:07      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:n个元素   style   定义   --   选择   i++   col   维数   百度   

软件工程上老师讲流程图时,要求画冒泡排序和选择排序的流程图--------问题来了,故想基于百度两种排序后,自我总结的写些什么

 

请将一维数组a[n] 里面的 n个元素  升序排好

---------------------------------------------------------

两种排序的共同点:

外循环:趟数(n-1)  for( i=0; i<n-1; i++ )

内循环:比较次数(在n-1基础上, 每趟后, 减1)   冒泡的 for( j=0; j<n-1-i; j++ )  /  选择的 for( j=i+1; j<n; j++ )

---------------------------------------------------------------------

冒泡排序(升序)

特点:将两个相邻元素进行比较, 前 > 后   交换值! ==========》     为了将 “大” 值 往后面放 (气泡越大越往上浮)

 1 //冒泡排序:
 2 int a[5] = {4,7,5,9,1};    int n = 5;
 3 
 4 int i,j;
 5 int temp;
 6 
 7 for(i=0; i<n-1; i++)    //外循环:趟数(n-1)
 8 {
 9     for(j=0; j<n-1-i; j++)    //内循环:次数(在n-1的基础上,每趟后 减1)
10     {
11         if(a[j] > a[j+1])    //相邻两个元素比较,前>后 交换!
12         {
13             temp = a[j];
14             a[j] = a[j+1];
15             a[j+1] = temp;
16         }
17     }
18 }

流程图:暂略

-----------------------------------------------------------------------------------

选择排序(升序)

特点:定义一个min变量,用来存 “小” 元素  的下标,赋值:①min = i (i=0)。i:外循环, j:内循环;

在待排序的元素中,②内循环:if( a[min] > a[j] )  min = j;  //暂理解为数组元素的下标变了,但 元素的值是没有变的;

找到 “小” 值后,③外循环:if( min != i )  { temp=&a[i];  &a[i]=&a[min];  &a[min]=temp;}  //将 “小”值 放到数组前面,这个元素(已排好序) 不参与后面的(未排好序) 比较了!

 1 //选择排序:
 2 int a[5] = {4,7,5,9,1};    int n = 5;
 3 int i,j,min;
 4 int temp;
 5 
 6 for(i=0; i<n-1; i++)    //外循环:趟数(n-1)
 7 {
 8     min = i;
 9     for(j=i+1; j<n; j++)    //内循环:次数(在n-1的基础上,每趟后 减1)
10     {
11         if(a[min] > a[j])
12             min = j;    //暂理解为数组元素的下标变了,但    元素的值是没有变的
13     }
14 
15     if(min != i)
16     {
17         temp = &a[i];
18         &a[i] = &a[min];
19         &a[min] = temp;
20     }
21 }

流程图:暂略(百度易得,实在懒得自己画了)

冒泡排序 & 选择排序(升序)

标签:n个元素   style   定义   --   选择   i++   col   维数   百度   

原文地址:https://www.cnblogs.com/Martin-CH/p/10575677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!