简单排序算法 C++类实现
简单排序算法:
- 冒泡排序
- 插入排序
- 选择排序
.h代码:
//
// SortClass.h
// sort and selection
//
// Created by wasdns on 16/10/8.
// Copyright © 2016年 wasdns. All rights reserved.
//
#ifndef SortClass_h
#define SortClass_h
class Array {
private:
int *a;
int n;
public:
Array(int a = 0):n(a){};
void Initial(int n); //数组初始化
void SelectSort(); //选择排序
void BubbleSort(); //冒泡排序
void InsertSort(); //插入排序
void PrintArray(); //输出数组
};
#endif /* SortClass_h */
.cpp代码:
//
// Implementation.cpp
// sort and selection
//
// Created by wasdns on 16/10/8.
// Copyright © 2016年 wasdns. All rights reserved.
//
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include "SortClass.h"
using namespace std;
/*
* 函数名称:SwapNum
* 函数参数:整形指针p, 交换位置l,交换位置r
* 函数目的:交换*(p+l)与*(p+r)
*/
void SwapNum(int* p, int l, int r) {
int t;
t = *(p + l);
*(p + l) = *(p + r);
*(p + r) = t;
}
/*
* 函数名称:Initial
* 函数参数:数组元素个数num
* 函数目的:初始化,并输入数组元素的值
*/
void Array::Initial(int num) {
int i;
n = num;
a = (int*)malloc(num);
for (i = 1; i <= n; i++) {
cin >> *(a + i);
}
}
/*
* 函数名称:PrintArray
* 函数目的:输出数组中的所有元素
*/
void Array::PrintArray() {
for (int i = 1; i <= n; i++) {
cout << *(a + i) << " ";
}
cout << endl;
}
/*
* 冒泡排序实现:
*/
void Array::BubbleSort() {
int i, j;
for (i = n; i > 1; i--) {
for (j = 1; j < i; j++) {
if (*(a + j) > *(a + j + 1)) {
SwapNum(a, j, j+1);
}
}
}
}
/*
* 插入排序实现:
*/
void Array::InsertSort() {
int i, j;
for (i = 2; i <= n; i++) {
int turn = i;
for (j = i - 1; j >= 1; j--) {
if (*(a + j) > *(a + turn)) {
SwapNum(a, j, turn);
turn = j;
}
else break;
}
}
}
/*
* 选择排序实现:
*/
void Array::SelectSort() {
int i, j;
for (i = 1; i <= n; i++) {
int k = i;
for (j = i + 1; j <= n; j++) {
if (*(a + j) < *(a + k)) k = j;
}
if (k != i) SwapNum(a, i, k);
}
}
2016/10/8
简单排序算法 C++类实现的更多相关文章
- 简单排序算法设计(Java)
总共有八种排序算法,还是慢慢看吧 1.简单排序算法 简单排序算法就是设置标兵,逐个比较数,然后查找插入位置,插入 public static void p(int[] a){ for(int i=0; ...
- 用javascript实现简单排序算法
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 本文为楼主自己的学习记录文章,若有不当之处请斧正. 本文主要记录排序算法 [冒泡排序] 感觉这个是最简单的排序算法了.直接引用维基百科里的 ...
- python实现简单排序算法
算法 递归两个特点: 调用自身 有穷调用 计算规模越来越小,直至最后结束 用装饰器修饰一个递归函数时会出现问题,这个问题产生的原因是递归的函数也不停的使用装饰器.解决方法是,只让装饰器调用一次即可,那 ...
- js的几种简单排序算法及其效率实测
function swap(arr,index1,index2){ var t = arr[index1]; arr[index1] = arr[index2]; arr[index2] = t; } ...
- 三种简单排序算法(java实现)
一.冒泡排序 算法思想:遍历待排序的数组,每次遍历比较相邻的两个元素,如果他们的排列顺序错误就交换他们的位置,经过一趟排序后,最大的元素会浮置数组的末端.重复操 作 ...
- 几个简单排序算法的Python实现
一,冒泡排序 冒泡排序我就不多讲了,大体上就是比较相邻的两个数,每次把较大的数沉底.流程图大致上如下: 图是截得别人的,只是说明一下,代码没有参看别人的,写的不好,有更好的写法可以一起探讨.下面是代码 ...
- JS三种简单排序算法
冒泡排序:最简单.最慢.长度小于7的时候最优 插入排序:比冒泡要快比快速排序和希尔排序慢,数据量小的时候优势大 快速排序:速度很快 //js利用systemSort进行排序 systemSort: ...
- 用js实现简单排序算法
一.冒泡排序 var arr1=[3,9,2,7,0,8,4]; for(var i=0;i<arr1.length;i++){ for(var j=i+1;j<arr1.length;j ...
- Java实现三大简单排序算法
一.选择排序 public static void main(String[] args) { int[] nums = {1,2,8,4,6,7,3,6,4,9}; for (int i=0; i& ...
随机推荐
- stm32——Flash读写
stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP( ...
- LINUX下安装TeamViewer
https://www.teamviewer.com/zhcn/download/linux/ [root@ok teamviewer]# yum install -y teamviewer_11.0 ...
- aidl 中通过RemoteCallbackList 运用到的回调机制: service回调activity的方法
说明:我没有写实例代码,直接拿项目中的代码,有点懒了,这里我省略贴出两个aidl文件. TtsService extends Service private final RemoteCallbackL ...
- duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
BUG造成的影响 继承自WindowImplBase的窗口类, 如果没有重写重写ResponseDefaultKeyEvent而由WindowImplBase默认处理的话, 会导致按一次有ESC键, ...
- IIS上发布WCF发布服务,访问不到
1 环境是IIS7,发布WCF发布服务,访问不到. 一种原因站点自动生成“程序应用池”和站点的Framwork版本不一致. 解决的办法:新建一个“程序应用池”,然后站点指向这个新建的“程序应用池”
- 电赛总结(四)——波形发生芯片总结之AD9851
一.特性参数 1.180 MHz时钟速率参考时钟具有6倍倍乘器.芯片具有高性能10位DAC和高速滞后比较器 2.+2.7 V至+5.25 V单电源工作 3.正常输出工作频率范围为 0-72MHz ; ...
- CDH中flume是已经启动着了…
文章来自:http://www.cnblogs.com/hark0623/p/4174646.html 转发请注明 在CDH中用了几天flume后才发现,原来CDH中的flume默认是启动的……… ...
- c#知识总结1
一.C#程序结构 一个c#程序主要包括以下部分 ①命名空间声明 ②一个class ③class方法 ④class属性 ⑤一个main方法 ⑥语句 和 表达式 以及 注释 简单的“Helloworld” ...
- VMware12版虚拟机怎么安装win7系统
工具/原料 VMware workstation 12 windows7镜像ios系统文件 链接:http://pan.baidu.com/s/1c0YrDgG 密码:vna1 建立一个新的虚拟机 ...
- UVa10779 Collectors Problem(最大流)
很容易想到源点向所类型有贴纸连边,容量为Bob一开始有的数量:然后贴纸向汇点连边,容量为1. 接下来就是交换部分的连边了.注意交换一次一次进行,每次只能交换一张. 交换,是对于两种贴纸而言,仅会发生在 ...