冒泡法排序_c++实现
看完了郝斌老师的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++实现的更多相关文章
- 8. 冒泡法排序和快速排序(基于openCV)
一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分 ...
- 【Java基础】选择排序、冒泡法排序、二分法查找
1.选择排序: //改进后的选择排序,减少交换的次数 public static void sortSelect(int arr[]) { //用于存放最小数的下标 int s; for (int i ...
- Java温故而知新-冒泡法排序
冒泡法排序是各种初学者在学习数组与循环结构时都会练习的一种简单排序算法. 冒泡法的精髓在于比较相邻的两个元素,较大的元素会不断的排到队伍后面去,就像水里的泡泡一样不断向上跑. 想像一下倒在一个透明玻璃 ...
- Python 冒泡法排序
def sequence(disorder='', separators=''): arrays = disorder.split(separators) def desc(): for i in r ...
- C#冒泡法排序源码
如下内容内容是关于C#冒泡法排序的内容,应该对码农有一些用途. int[] myArray = new int[] { 10, 8, 3, 5, 6, 7, 4, 6, 9 }; for( int j ...
- [python,2018-01-15] 冒泡法排序
想写一个冒泡法排序,没什么思路,就先写了个java的 public static void main(String[] args) { int array[] = {88,2,43,12,34,8,6 ...
- C语言 · 冒泡法排序
算法提高 冒泡法排序 时间限制:1.0s 内存限制:512.0MB 输入10个数,用“冒泡法”对10个数排序(由小到大)这10个数字在100以内. 样例输入 1 3 6 8 2 7 ...
- C程序数组算法 — 冒泡法排序【前冒 || 后冒】
第一种写法(前冒泡): /* C程序数组算法 - 冒泡法排序 * 此例子按照 大 -> 小 排序 * 原理:两两相比较,然后进行大小对调 * 比较次数: n^2 次 * 说明:冒泡排序是相对稳定 ...
- php 冒泡法 排序
<?php /** * php 冒泡法 * @param $arr * @param string $order 排序符 * @return $arr */ function orderarr( ...
随机推荐
- 解决Web开发HTML页面中footer保持在页面底部问题
如图所示如何实现footer在内容不足或者浏览器窗口变大变小的时候一直保持在底部呢?请看如下两种解决方案. 第一种方案: footer高度固定+绝对定位 (兼容性比较好完美兼容IE8+)思路:foot ...
- CF995E Number Clicker
题目分析 首先,我们必须明白,操作都是互逆的,\(1,2\)之间是可以互相转化的,这是不需证明的,对于操作\(3\),实际上,是求当前数的逆元,我们知道,逆元就是求当前数在模另一个数下的倒数,那么,逆 ...
- 【PowerShell】ASCII与Char之间的转换
1 [char[]][int[]]$char=65..90 2 $char -join ',' 3 [int[]][char[]]$ascii=$char 4 $ascii -join ',' A,B ...
- PAT 乙级 1001. 害死人不偿命的(3n+1)猜想 (15)(C语言描述)
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- k8s中kubeconfig的配置及使用
1.概述 kubeconfig文件保存了k8s集群的集群.用户.命名空间.认证的信息.kubectl命令使用kubeconfig文件来获取集群的信息,然后和API server进行通讯. 注意:用于配 ...
- 2月10日 体温APP开发总结
1.Java代码 1.user package bean;public class User { private String name; private String riqi; private S ...
- 【刷题-LeetCode】188 Best Time to Buy and Sell Stock IV
Best Time to Buy and Sell Stock IV Say you have an array for which the i-th element is the price of ...
- [源码分析] Facebook如何训练超大模型 --- (2)
[源码分析] Facebook如何训练超大模型 --- (2) 目录 [源码分析] Facebook如何训练超大模型 --- (2) 0x00 摘要 0x01 回顾 1.1 ZeRO 1.1.1 Ze ...
- IEEE754浮点数表示法
IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)是一套规定如何用二进制表示浮点数的标准.就像"补码规则"建立了二进制位和正负数的一一对应关系一样,IEE ...
- Android开发-数据库代码编写
数据库代码主要是查找 package com.example.Utils.database; import android.annotation.SuppressLint; import androi ...