c语言排序程序ppt,冒泡排序 ---C语言程序设计.ppt

冒泡排序 ---C语言程序设计.ppt

冒泡排序 ---C语言程序设计 主讲人:朱志慧 河南牧业经济学院微课比赛 算法思想 算法分析 程序实现 C语言程序设计----冒泡排序 拓展思考 算法思想 一、基本思路 从前到后扫描数据序列,比较相邻两个数的大小,将小的调到前面,大的调到后面,每比较一轮,最大的数将排到最后;再将余下的元素进行比较,得到新的最大数。以此类推,直到所有数据按顺序排列。 二、算法演示 算法思想 第 1 轮 比较4次 二、算法演示 算法思想 二、算法演示 二、算法演示 算法思想 第 2 轮 比较3次 二、算法演示 二、算法演示 算法思想 第 3 轮 比较2次 二、算法演示 二、算法演示 算法思想 第 4 轮 比较1次 外层循环 内层循环 第1轮 第2轮 第3轮 第4轮 i=1; i<=4; i++ 5-i; j=1; j<=5-i; j++ 算法分析 数据输入 排序 数据输出 for ( i=1; i<=5; i++ ) scanf ( "%d", &a[i] ); for ( i=1; i<=4; i++ ) for ( j=1; j<=5-i; j++ ) if ( a[j] > a[j+1] ) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for ( i=1; i<=5; i++ ) printf ( "%d ", a[i] ); 程序实现 “升序”与“降序”? 排序数据的个数问题(N个) 拓展思考 首先带大家进入泡泡的世界,这些泡泡大小不一,随机的分布在屏幕上 我们可以通过一些排序方法,将它们按照大小顺序依次排列。 排序方法有很多种,今天我们来学习一下如何用C语言来实现冒泡排序。下面将以4个步骤进行展开讲述。 1.算法演示,2.算法分析,3.程序实现,4.拓展思考 根据算法思想,以5个泡泡为例,给大家演示一下冒泡排序的过程。每个泡泡分别代表不同的数据,现在的次序为39,21,16,25, 和8,那么我们来进行第一轮的排序。 前面相邻两个数39和21相比较,21小于39,两者交换,保证小的数据放在前面。相邻两个数39和16比较;16小于39交换。39和25比较,25小于39,两者交换;39和8比较,8小于39,两者交换。当第一轮比较完毕后,最大的数39被交换到了后一位。第一轮比较的次数为4。 下面再对剩下的前4个元素进行第2轮的排序。相邻两个数21和16比较,16小于21,交换;相邻两个数21和25比较,大家注意一下,25不小于21,所以两者不用交换;再比较25和8,8小于25,两者交换。第二轮比较结束后,次大的数25被交换到了倒数第二位。第二轮比较的次数为3。 下面,我们进行算法分析。第一轮重复比较了4次,第二轮重复比较3次,第三轮重复比较2次,第四轮比较1次。每一轮都进行了多次重复比较,对于这5个数据排序,应该用嵌套循环,轮数应当做外层循环,次数当作内层循环。 假设i为外层循环变量,初值为1,步长为1;进行4轮比较,外层循环应该for(i=1;i<=4;i++) 对于内层循环,;从轮数和次数的关系中,我们可以看到,轮数越多,次数越少,因此它们是一个减的关系, 当i=1, 比较4次,i=2比较3次,依次类推,比较次数应该为5-I,j=5-2,依次类推,假设j为内层循环变量为,循环条件应该为:(j=0;j<=5-i;j++) * 程序分了三块,第一块是数据的输入,第二块排序,第三块是数据的输出。 首先,通过for循环将5个数据输入到数组中, 然后通过嵌套循环实现5个数据的冒泡排序,其中外层循环做了4次比较,所以应该为i=1;i<=4;i++; 在每一轮当中,比较的次数为5-i,所以,内层循环应该为j=1;j<=5-i;j++ 在比较过程中,如果前一个元素a[j]>a[j+1],那么他们将做一个交换。 最后,我们将排列好的5个数据输出来。 好,我们对整个程序在VC++平台上进行实现。 在程序;设计了4个变量,其中数组a存放5个数据,i外层循环变量;j内层循环变量;t为元素交换时的中间变量。 这块是数据的输入 这块是冒泡算法的实现 这块是排列好的数据的一个输出。我们来进行编译运行,没有错误。输入5个数据:21,16,25,69,8,回车,大家可以看下5个数据按照大小依次排列。 下面我们把整个程序在VC++的平台上给大家展示一下。 * 我们的例子是对五个数据进行升序排序。,请大家做一下拓展思考。如

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
冒泡排序是一种计算机科学领域中较简单的排序算法,它通过重复走访要排序的元素列来进行排序。这个算法的基本思想是依次比较两个相邻的元素,如果它们的顺序不正确(例如从大到小或从小到大),则交换它们的位置,直到整个序列排序完成。以下是一个用Java实现冒泡排序的例子: ``` public class BubbleSort { public static void sort(int array[]) { // i表示第几轮“冒泡”,j 表示“走访”到的元素索引。 // 每一轮“冒泡”中,j 需要从列表开头“走访”到 array.length - 1 的位置。 for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j > array[j + 1]) { int temp = array[j]; array[j = array[j + 1]; array[j + 1 = temp; } } } } } ``` 下面是一个使用冒泡排序算法对数组进行排序的示例: ``` import java.util.Arrays; public class TestMain { public static void main(String[] args) { int[] array = new int[]{55, 33, 22, 66, 11}; // 输出排序前的array数组 System.out.print("排序前:"); System.out.println(Arrays.toString(array)); // 调用BubbleSort类中的sort方法对array数组进行排序 BubbleSort.sort(array); // 输出冒泡排序后的array数组 System.out.print("排序后:"); System.out.println(Arrays.toString(array)); } } ``` 在上面的例子中,我们首先创建一个数组`array`,然后调用`BubbleSort`类中的`sort`方法对数组进行排序。最后,我们输出排序前和排序后的数组。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java基础冒泡排序.ppt](https://download.csdn.net/download/Ryosetsu124/12274855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java实现冒泡排序(详解)](https://blog.csdn.net/m0_48013875/article/details/115908045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值