看完了郝斌老师的c语言视频,冒泡法排序,就试着写了。我觉得学习算法最重要的不是代码,而是它的原理。

代码:

/**
2 * Copyright (c) 1991 - 2016 Arvin Tang.
3 * All rights reserved.
4 *
5 * 文件名称:郝斌C语言视频教程_163_冒泡排序
6 * 简要描述:用冒泡法排序
7 *
8 * 当前版本:1.0
9 * 作 者:
10 * 完成日期:2016-1-9
11 * 修订说明:
12 *
13 * 取代版本:
14 * 作 者:
15 * 完成日期:
16 * 修订说明:
17 */
18 # include <iostream>
19
20 using namespace std;
21
22 void up_sort(int * p, int num);//冒泡升序排序函数
23 void down_sort(int * p, int num);//冒泡降序排序函数
24
25 int main(int argc, char const *argv[])
26 {
27 int num;
28
29 int i;
30
31 int op;//菜单选项
32
33 cout<<"请输入你要排序的个数:"<<endl;
34 cin>>num;
35
36 //申请动态内存
37 int * arrary = (int *)malloc(sizeof(int)*num);
38 if(arrary == NULL)
39 {
40 cout<<"申请动态数组失败!"<<endl;
41 exit(0);//exit(0)表示正常结束,exit(非0值表示错误返回)
42 }
43
44 cout<<"请输入你要排序的数字:"<<endl;
45 for(i = 0; i < num; i++)
46 {
47 cin>>arrary[i];
48 }
49
50 cout<<"请选择排序方式对应的序号:\t1 升序(从小到大)\t2 降序(从大到小)"<<endl;
51 cin>>op;
52
53 switch(op)
54 {
55 case 1 :
56 up_sort(arrary,num);
57 cout<<"升序已排完:"<<endl;
58 break;
59 case 2 :
60 down_sort(arrary,num);
61 cout<<"降序已排完:"<<endl;
62 break;
63 default:
64 break;
65 }
66
67 for(i = 0; i < num; i++)
68 {
69 cout<<arrary[i]<<"\t";
70 }
71
72 cout<<"\n";
73
74 return 0;
75 }
76
77 /**
78 * 函数名称:冒泡法_升序排序
79 * 输入参数:一维数组地址,数组元素个数
80 * 输出参数:
81 * 返 回 值:
82 */
83 void up_sort(int * p, int num)
84 {
85 int i;
86 int j;
87 int temp;
88
89 for(i = 0; i < num-1; i++)
90 {
91 for(j = 0; j < num-i-1; j++)
92 {
93 if(p[j] > p[j+1])
94 {
95 temp = p[j+1];
96 p[j+1] = p[j];
97 p[j] = temp;
98 }
99 }
100 }
101 }
102
103 /**
104 * 函数名称:冒泡法_降序排序
105 * 输入参数:一维数组地址,数组元素个数
106 * 输出参数:
107 * 返 回 值:
108 */
109 void down_sort(int * p, int num)
110 {
111 int i;
112 int j;
113 int temp;
114
115 for(i = 0; i < num-1; i++)
116 {
117 for(j = 0; j < num-i-1; j++)
118 {
119 if(p[j] < p[j+1])
120 {
121 temp = p[j+1];
122 p[j+1] = p[j];
123 p[j] = temp;
124 }
125 }
126 }
127 }

效果:

冒泡法排序_c++实现的更多相关文章

  1. 8. 冒泡法排序和快速排序(基于openCV)

    一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分 ...

  2. 【Java基础】选择排序、冒泡法排序、二分法查找

    1.选择排序: //改进后的选择排序,减少交换的次数 public static void sortSelect(int arr[]) { //用于存放最小数的下标 int s; for (int i ...

  3. Java温故而知新-冒泡法排序

    冒泡法排序是各种初学者在学习数组与循环结构时都会练习的一种简单排序算法. 冒泡法的精髓在于比较相邻的两个元素,较大的元素会不断的排到队伍后面去,就像水里的泡泡一样不断向上跑. 想像一下倒在一个透明玻璃 ...

  4. Python 冒泡法排序

    def sequence(disorder='', separators=''): arrays = disorder.split(separators) def desc(): for i in r ...

  5. C#冒泡法排序源码

    如下内容内容是关于C#冒泡法排序的内容,应该对码农有一些用途. int[] myArray = new int[] { 10, 8, 3, 5, 6, 7, 4, 6, 9 }; for( int j ...

  6. [python,2018-01-15] 冒泡法排序

    想写一个冒泡法排序,没什么思路,就先写了个java的 public static void main(String[] args) { int array[] = {88,2,43,12,34,8,6 ...

  7. C语言 · 冒泡法排序

    算法提高 冒泡法排序   时间限制:1.0s   内存限制:512.0MB      输入10个数,用“冒泡法”对10个数排序(由小到大)这10个数字在100以内. 样例输入 1 3 6 8 2 7 ...

  8. C程序数组算法 — 冒泡法排序【前冒 || 后冒】

    第一种写法(前冒泡): /* C程序数组算法 - 冒泡法排序 * 此例子按照 大 -> 小 排序 * 原理:两两相比较,然后进行大小对调 * 比较次数: n^2 次 * 说明:冒泡排序是相对稳定 ...

  9. php 冒泡法 排序

    <?php /** * php 冒泡法 * @param $arr * @param string $order 排序符 * @return $arr */ function orderarr( ...

随机推荐

  1. Java初学者作业——计算大庆路小学的面积练习

    返回本章节 返回作业目录 需求说明: 大庆路小学因为装修需要对教室的一侧墙面进行重新粉刷,墙面安装了一面黑板,墙面的长和高以及黑板的长和高. 请编写Java程序计算出需要粉刷的墙面面积.功能要求:输入 ...

  2. Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。

    返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...

  3. openmesh - src - trimesh delete and add elements

    openmesh - src - trimesh delete and add elements openmesh 版本 8.1 About 本文主要介绍openmesh的如下接口 add_verte ...

  4. visual studio code 修改工具栏风格

    用windows版vscode的同学们是否发现它的工具栏是白色的跟整个界面看起来不太搭调,如下图: 其实要改变标题栏颜色也很简单,点击:文件> 首选项>设置 将 "window. ...

  5. linux下备份mysql数据

    一.业务场景 自己现在做的项目基本上已经开发完成,正式开始上线运行,主要包含两个子项目一个是小程序的后台,一个是后台管理系统. 正式开始运行一段时间后,基本上也没什么BUG了,整个项目都已经能够正常的 ...

  6. shell2-if判断

    1.条件测试类型(判断类型): 将测试结果做为判断依据. 测试类型有以下三种   [ 命令 ] :命令测试法(最常用的)  [[ 命令 ]] : 关键字测试 test 命令 以上是三种都可以,注意单词 ...

  7. 1.linux中的常用命令

    本文积累工作中常用到的Linux命令 1. rz -be 文件上传到Linux服务器 此命令执行时,会弹出文件选择对话框,选择好需要上传的文件之后,点确定,就可以开始上传的过程了.上传的速度取决于当时 ...

  8. 学习javaScript必知必会(1)~js介绍、函数、匿名函数、自调用函数、不定长参数

    一.简单了解一下JavaScript(js) 1.什么是js? js:是网景公司开发的,是基于客户端浏览器, 面向(基于)对象.事件驱动式的页面脚本语言. 2.什么场景下使用到js? 表单验证.页面特 ...

  9. Flowable实战(七)用户和组

      在流程中,最重要的参与者是用户.流程定义了任务何时需要用户参与,什么用户可以参与.   组可以理解为我们常说的角色.   Flowable中内置了一套简单的对用户和组的支持,身份管理(IDM ID ...

  10. day 16 int *p; scanf("%d",p);问题

    (1).以下不能用于描述算法的是[A] (A).E-R图 (B).伪代码 (C).计算机语言 (D).流程图 分析:E-R图也称实体-联系图,提供了表示实体类型.属性和联系的方法,用来描述现实世界的概 ...