看完了郝斌老师的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. .Net Core 3.1 WebApi发布到IIS

    安装.Net Core 3.1 运行时环境 1.官网地址https://dotnet.microsoft.com/download/dotnet,选择要下载的运行时版本(.Net Core 3.1), ...

  2. Ranger-Kylin插件安装

    Ranger-Kylin插件安装, 从Ranger1.1.0版本开始支持Ranger Kylin插件, 从Kylin2.3.0版本开始支持Ranger Kylin插件的权限控制. 1.获取安装包 sc ...

  3. VUE3 之 键盘事件

    1. 概述 老话说的好:宁愿自己吃亏,也不让他人吃亏. 言归正传,今天我们来聊聊 VUE3 的 键盘事件. 2. 键盘事件 2.1 敲击任意键触发事件 <body> <div id= ...

  4. RabbitMQ --- 直连交换机 【 无回调方法,不能获取消费结果 】

    1.前言 消息队列除了kafka 外,还有许多种,比如RabbitMQ .ActiveMQ.ZeroMQ.JMQ等. 老牌的ActiveMQ ,底层使用Java写的,资源消耗大,速度也慢,但是适合 J ...

  5. C#进程调用FFmpeg操作音视频

    项目背景 因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂 ...

  6. css中两种居中方式text-align:center和margin:0 auto 的使用场景

    关于使用text-align:center和margin:0 auto 两种居中方式的比较 前言:最近由于要学习后端,需要提前学习一部分前端知识,补了补css知识,发现狂神在讲这一部分讲的不是特别清楚 ...

  7. leetcode 264. 丑数 II 及 313. 超级丑数

    264. 丑数 II 题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, ...

  8. 【记录一个问题】没用任何用处的解决了libtask的context.c在32位NDK下的编译问题

    32位下用ndk编译libtask出现这样的错误: [armeabi-v7a] Compile thumb : task <= context.c /Users/ahfu/code/androi ...

  9. Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值

    本文为博主原创,转载请注明出处: 最近在进行压测,为了观察并定位服务性能的瓶颈,所以在代码中很多地方加了执行耗时的日志,但这种方式只能观察,却在压测的时候,不太能准确的把握代码中某些方法的性能,所以想 ...

  10. 学习AJAX必知必会(4)~JQuery发送Ajax请求

    一.JQuery发送Ajax请求 ■ 对于get和post请求,jQuery内部封装了Ajax请求的4个步骤和数据格式的设置 ■ 对于Ajax通用请求,jQuery内部封装了Ajax请求的4个步骤和数 ...