查看“交换类排序”的源代码
←
交换类排序
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
===3)冒泡排序=== https://www.bilibili.com/video/BV1hg411V7Bm/?p=69 冒泡排序的基本思想是:通过相邻元素之间的比较和交换,将排序码较小的元素主键从底部移向顶部。 由于整个排序的过程就像水底下的气泡一样逐渐向上冒,因此称为冒泡算法。[[文件:冒泡排序 第一趟.png|无|缩略图|300x300像素|链接=http://www.jihongchang.top/index.php/%E6%96%87%E4%BB%B6:%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F_%E7%AC%AC%E4%B8%80%E8%B6%9F.png]][[文件:冒泡排序 第二趟.png|无|缩略图|300x300像素|链接=http://www.jihongchang.top/index.php/%E6%96%87%E4%BB%B6:%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F_%E7%AC%AC%E4%BA%8C%E8%B6%9F.png]]<syntaxhighlight lang="c"> void bubbleSort(int arr[], int n) { int temp; int i,j; for(i=0; i<n-1;i++) //外循环为排序趟数,n个数进行n-1趟 { for(j=0;j<n-1-i;j++) //内循环为每趟比较的次数,第i趟比较n-i次 { if (arr[j]>arr[j+1]){ //相邻元素比较,若逆序则交换 temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } }//end inner for }//end outter for } </syntaxhighlight> ===4)快速排序=== 快速排序采用的是分治法,其基本思想是将原问题分解成若干个规模更小但结构与原问题相似的子问题。 通过递归解决这些子问题,然后再将这些子问题的解组合成原问题的解。[[文件:快速排序.png|无|缩略图|618x618像素|链接=http://www.jihongchang.top/index.php/%E6%96%87%E4%BB%B6:%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F.png]] 快速排序通常包括两个步骤: 第一步,在待排序的n个记录中任取一个记录,以该记录的排序码为准,将所有记录都分成两组,第1组都小于该数,第2组都大于该数,如图所示。 第二步,采用相同的方法对左、右两组分别进行排序,知道所有记录都排到响应的位置为止。<syntaxhighlight lang="c"> void quickSort() //快速排序 { int i,j; int pivot=a[0]; //设置基准值 i=0; j=n-1; while(i<j) { while(i<j&& a[j]>pivot){ //大于基准值者保持在原位置 j--; } if(i<j){ a[i]=a[j]; i++; } while(i<j&&a[i]<=pivot) { //不大于基准值保持在原位置 i++; }; if(i<j) { a[j]=a[i]; j--; } }//end while a[i]=pivot; //基准元素归位 if(i>1) quickSort(a, i); //递归地对左子序列进行快速排序 if(n-i-1>1) quickSort(a+i+1, n-i-1); //递归地对右子序列进行快速排序 } </syntaxhighlight> ===考点:一趟排序结果比较=== 采用()算法对序列{18,12,10,11,23,2,7}进行一趟递增排序后,其元素的排列变为{12,10,11,18,2,7,23}。 A、选择排序 B、快速排序 C、归并排序 D、冒泡排序 √ 解: 最大的是23,23一趟下来到最后了,冒泡一趟下来能把最大的数排到最后 假如是冒泡: 1趟1次比:18>12,交换 12,18,10,11,23,2,7 1趟2次比:18>10,交换 12,10,18,11,23,2,7 1趟3次比:18>11,交换 12,10,11,18,23,2,7 1趟4次比:18<23,不变 1趟5次比:23>2,交换 12,10,11,18,2,23,7 1趟6次比:23>7,交换 12,10,11,18,2,7,23
返回至
交换类排序
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息