一种典型的交换排序
类似水冒泡,大元素经不断的交换由水底慢慢的浮出
从头到尾,循环比较两相邻的元素
大的元素移到后面,小的放前面-每次循环,大的元素会排到最后
代码如下:
- #include
- #include
- //升序排序
- void Bubble_sort(int a[], int size){
- int i,j,temp;
- for(int i=0 ; i
-1 ;i++) //size-1 : 不用和自己比较 - {
- int flag =0;//比较记号
- //在a[0]到a[size-i-1]之间比较,将最大的数放最后(即a[size-i-1])
- for(int j=0 ; j
-1 ; j++) - {
- if(a[j] > a[j+1])//比较,大的在后面
- {
- temp = a[j]; a[j]= a[j+1]; a[j+1]=temp;
- flag =1;
- }
- }
- //若flag为0,则在该轮次没有交换动作,说明排序已经完成,break跳出循环
- if(flag == 0 ) break;
- }
- }
-
- void main()
- {
- int a[10];
- printf("输入10个整形数据(整数):");
- for(int i=0;i<10 ; i++)
- scanf("%d",&a[i]);
-
- Bubble_sort(a,10); //排序处理
- printf("排序后的数组:\n");
- for(int i=0;i<10 ; i++)
- printf("%d ",a[i]);
-
- system("pause");//屏幕暂停
- }
简单选择排序(Select Sort)示意图如下图所示。
代码如下:
- #include
- #include
-
- void SelectSort(int arr[],int n){
- //minIndex用于记录每一趟中最小元素的下标
- int i,j,temp,minIndex;
- /*
- 外层循环,用于控制第1层到第n-1轮排序
- 第i轮循环时,后面部分的元素的下标范围为(i-1) 到 (n-1)
- */
- for( i=1; i
- //将后面(未排序)部分的第1个元素赋予minIndex
- minIndex = i-1;
-
- for(j =i ; j < n ; j++ ){ //找到本轮循环中最小元素
- if( arr[j]
- minIndex = j;
- }
- }
- //若本轮中最小的元素不是后面部分的第1个元素,则需要交换元素
- if(minIndex != i-1 ){
- temp=arr[minIndex]; arr[minIndex]=arr[i-1]; arr[i-1]=temp;
- }
- }
- }
-
- void main(){
- int a[10];
- printf("输入10个整形数据(整数):");
- for(int i=0;i<10 ; i++)
- scanf("%d",&a[i]);
-
- SelectSort(a,10); //排序处理
- printf("排序后的数组:\n");
- for(int i=0;i<10 ; i++)
- printf("%d ",a[i]);
- printf("\n");
- system("pause");//屏幕暂停
- }
-
相关阅读:
2022年 SecXOps 安全智能分析技术白皮书 附下载地址
铸坯火焰自动切割系统的设计状况及存在的问题
微同城生活圈小程序源码系统 专业搭建本地生活服务的平台 带完整搭建教程
Linux_包管理_apt和apt-get、apt upgrade会自动升级内核
纳米金颗粒修饰核酸产品|碳纳米管载核酸-DNA/RNA材料|解析说明
Flink代码单词统计 ---批处理
还不会用springboot写接口?快看这里,手把手操作,一发入魂~
VUE:可收缩工具栏
(利用IDEA+Maven)定制属于自己的jar包
Leetcode 90. 子集 II
-
原文地址:https://blog.csdn.net/weixin_46858088/article/details/133889475