冒泡排序 & 选择排序(升序)
软件工程上老师讲流程图时,要求画冒泡排序和选择排序的流程图--------问题来了,故想基于百度两种排序后,自我总结的写些什么
请将一维数组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++ )
---------------------------------------------------------------------
冒泡排序(升序)
特点:将两个相邻元素进行比较, 前 > 后 交换值! ==========》 为了将 “大” 值 往后面放 (气泡越大越往上浮)
- //冒泡排序:
- int a[] = {,,,,}; int n = ;
- int i,j;
- int temp;
- for(i=; i<n-; i++) //外循环:趟数(n-1)
- {
- for(j=; j<n--i; j++) //内循环:次数(在n-1的基础上,每趟后 减1)
- {
- if(a[j] > a[j+]) //相邻两个元素比较,前>后 交换!
- {
- temp = a[j];
- a[j] = a[j+];
- a[j+] = temp;
- }
- }
- }
流程图:暂略
-----------------------------------------------------------------------------------
选择排序(升序)
特点:定义一个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;} //将 “小”值 放到数组前面,这个元素(已排好序) 不参与后面的(未排好序) 比较了!
- //选择排序:
- int a[] = {,,,,}; int n = ;
- int i,j,min;
- int temp;
- for(i=; i<n-; i++) //外循环:趟数(n-1)
- {
- min = i;
- for(j=i+; j<n; j++) //内循环:次数(在n-1的基础上,每趟后 减1)
- {
- if(a[min] > a[j])
- min = j; //暂理解为数组元素的下标变了,但 元素的值是没有变的
- }
- if(min != i)
- {
- temp = &a[i];
- &a[i] = &a[min];
- &a[min] = temp;
- }
- }
流程图:暂略(百度易得,实在懒得自己画了)
冒泡排序 & 选择排序(升序)的更多相关文章
- 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较
2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...
- 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]
关于冒泡排序,选择排序,插入排序,希尔排序[资料收集] 以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...
- C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序
C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 ...
- python算法(一)基本知识&冒泡排序&选择排序&插入排序
本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...
- C语言实现 冒泡排序 选择排序 希尔排序
// 冒泡排序 // 选择排序 // 希尔排序 // 快速排序 // 递归排序 // 堆排序 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h& ...
- java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数
import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...
- php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序
<?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){ $num=count($arr); ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
随机推荐
- Delphi编译选项
编译选项的设置,称为“开关指令”,其中大部分值为布尔类型 一.代码生成(Code generation)1.Optimization 优化代码,默认true2.Stack frames 生成过程/ ...
- 【CentOS】PostgreSQL安装与设定
本教程适合Centos6.7或者RedHat. PostgreSQL安装 1.Postgresql安装包确认 yum list postgresql* postgresql-server.x86_64 ...
- 【json】与【枚举】的序列化和反序列化
参考:Jackson – Deserialization from json to Java enums 问题描述 java中使用枚举时,如果涉及到restful调用,不可避免会涉及到枚举的序列化和反 ...
- idea git commit撤销
到项目目录下,打开git bash 1.git log 找到要撤销的版本id1 commit之前的版本id2 2.git reset –hard id13.git reset id2 参考链接:htt ...
- 再说项目 Dec 27th 2018
其实对于任何项目来说,最难不是开发或者系统等技术的问题,反而是需求的问题,需求一直变,一直定不下来,导致流程变来变去,系统方案层面也确定不下来.而需求的问题,归根结底还是人的问题.项目的关键用户对现有 ...
- CSS3之动画模块实现轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Windows Unity ARKit发布到IOS相关设置及错误解决
Windows 版Unity安装: 考虑到在虚拟机中运行Unity比较卡,所以采用在Windows Unity上将项目发布好然后再复制到Mac虚拟机中通过XCode进行编译的方式. Unity版本为 ...
- vue 组件自定义v-model
参考资料:vue官网在vue 中使用v-model双向绑定 <input v-model="something"> 其实是语法糖 <input :value=&q ...
- html 常用button事件
<input onclick="document.all.WebBrowser.ExecWB(1,1)" type="button" value=&quo ...
- (5/24) 模块化:实现快速CSS文件打包
写在前面:为了兼容,此处的webpack版本为3.6.0.webpack-dev-server版本为2.9.7.css-loader版本为2.0.0.style-loader版本为0.23.1,若在下 ...