冒泡排序 ,选择排序,插入排序

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<random>
#include<time.h>
#include<sys/timeb.h>
using namespace std;
#define MAX 10long getSystemTime()
{struct timeb tb;ftime(&tb);return tb.time * 1000 + tb.millitm;  //毫秒
}void printArr(int arr[], int length)
{for (int i = 0; i < length; i++){printf("%d ", arr[i]);}printf("\n");
}void Swapp(int *a, int *b)
{//int temp;int temp = *a;*a = *b;*b = temp;
}//从小到大排序
void bubbleSort1(int arr[], int length)
{for (int i = 0; i < length; i++)   //从前到后排序{for (int j = 0; j < length - i - 1; j++){if (arr[j] > arr[j + 1]){Swapp(&arr[j], &arr[j + 1]);}}}
}
//从小到大排序
void bubbleSort2(int arr[], int length)
{for (int i = 0; i < length; i++)   //从后往前排序{for (int j = length - 1; j > i; j--){if (arr[j] < arr[j - 1]){Swapp(&arr[j], &arr[j - 1]);}}}
}//冒泡排序2改进版
int flag = 0;  //0表示没有排序好
void BubbleSort(int arr[], int length)
{for (int i = 0; i < length&&flag==0; i++)   //从后往前排序{flag = 1;  //认为已经排序好for (int j = length - 1; j > i; j--){if (arr[j] < arr[j - 1]){flag = 0;Swapp(&arr[j], &arr[j - 1]);}}}
}//从小到大排序
void selectSortme(int arr[], int length)
{   for (int i = 0; i < length; i++)   //从前到后排序{//for (int j = i+1; j < length-i-1; j++)//这里j初始值在一直增加,所以长度为lengthfor (int j = i + 1; j < length; j++){if (arr[j] <= arr[i]){Swapp(&arr[i], &arr[j]);}}printf("");printArr(arr, MAX);}
}
void selectSort(int arr[], int length)
{for (int i = 0; i < length; i++)   //从前到后排序{int min = i;for (int j = i + 1; j < length; j++){if (arr[j] < arr[min]){min = j;}}//Swapp(&arr[min], &arr[i]); 交换次数多if (min != i)  //交换次数少{Swapp(&arr[min], &arr[i]);}}
}void insertSort(int arr[], int length)   //如何定义新数组???
{int j;for (int i = 1; i < length; i++)  //从第二个数开始是无序队列。第一个数为有序队列{if (arr[i]<arr[i-1]){int temp = arr[i];  //将满足条件的元素缓冲到temp中for (j = i-1; j >=0 && temp < arr[j]; j--)  //将前面的移到后面,方便插入{arr[j + 1] = arr[j];}arr[j + 1] = temp;  //填补坑}}
}int main()
{int arr[MAX];srand((unsigned int)time(NULL));  //种子for (int i = 0; i < MAX; i++){arr[i] = rand() % MAX;}printf("未排序数组为:");printArr(arr, MAX);long t_start = getSystemTime();insertSort(arr, MAX);long t_end = getSystemTime();printf("冒泡排序后数组为:");printArr(arr, MAX);//printf("冒泡排序%d个元素,所需时间:%1d\n", MAX, t_end - t_start);system("pause");return 0;
}

插入排序过程:

数据结构排序1-冒泡,选择,插入排序相关推荐

  1. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  2. 算法笔记-排序算法(冒泡 选择 插入)

    首先罗列一下常见的十大排序算法: 一.冒泡排序 1. 定义: 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则 ...

  3. 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)

    直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...

  4. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

  5. python 按条件选择行和列数据_小白学数据结构-排序算法Python(冒泡、选择、快速、希尔等等)...

    排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们通常所说的排序算法往往指的是内部排序算法,即数据 ...

  6. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  7. 数据结构排序算法 内部排序(冒泡、鸡尾酒、选择、简单插入、二分插入、快排、希尔、归并、堆排)C语言实现

    文章目录 排序 冒泡排序 鸡尾酒排序 选择排序: 简单插入排序: 二分插入排序 快速排序: 希尔排序: 归并排序: 堆排序: 排序 点击以下图片查看大图: 冒泡排序 1.比较相邻的元素,如果前一个比后 ...

  8. 数据结构——排序:插入排序、选择排序、交换排序、归并排序、基数排序

    排序 内部排序:数据量不大,在内存中可以完成排序. 外部排序:借助外存.把数据文件分成若干块,涉及内外存数据的转换.存储器的管理等. 稳定排序:能保证排序前两个相等的数其在序列的前后位置顺序和排序后它 ...

  9. 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

    冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...

  10. 程序员内功修炼之学好算法和数据结构(一)排序基础、选择排序、插入排序、希尔排序...

    一.排序基础(重要) 1.1 为什么要学习O(n^2)的排序算法? 编码简单,易于实现,是一些简单情景的首选. 在一些特殊情况下,简单的排序算法更有效. 简单的排序算法思想衍生出复杂的排序算法,在这个 ...

最新文章

  1. selenium WebDriverException: Message: unknown error: DevToolsActivePort file doesnt exist
  2. 数字人民币解密:数字人民币的系统架构、产品形态是什么样的?
  3. 【KVM系列08】使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  4. 01 前端篇(标签)
  5. 前端自适应----单位rem
  6. 【Flink】Flink jvm参数配置GC日志
  7. 数据安全平台——DSP
  8. 30+英文电子书免费下载网站,跟喜欢看英文电子书的朋友分享
  9. 宏基服务器 安装系统,手把手教你acer宏碁笔记本电脑如何重装系统
  10. php 热搜词,2020 十大网络热搜流行语来了!你知道几个?
  11. JavaScript实现的放大镜放大图片效果
  12. Django 实现搜索结果分页(筛选结果分页),以及优雅添加多个筛选条件
  13. 服务器虚拟机6的安装教程,VMware vCenter 6.7 安装过程(图文教程)
  14. FutureCar Week第四届无人驾驶及智能驾舱中国峰会将于5月在沪盛大召开
  15. VMware虚拟化- vMotion 迁移原理与应用
  16. 红旗linux 操作系统,红旗Linux操作系统9.0官方下载-红旗Linux操作系统9.0正式版(基于c语言)免费版 - 维维软件园...
  17. leetcode hot100 之 子集
  18. 长期稳定短视频去水印微信小程序源码
  19. 正则匹配所有字符(包括换行)
  20. 卡尔曼(Kalman)滤波算法原理、C语言实现及实际应用

热门文章

  1. java反射jdk1.8,Java基础----jdk1.8 反射实验
  2. linux运行程序+后注销,linux – 如果我启动后台进程然后注销,它会继续运行吗?...
  3. 华为6x手机计算机软件没有了,只用一招,教你将华为手机变成电脑,这波操作没几个人知道...
  4. 如何修改matlab中的语句,求大神帮忙看一下这个语句怎么改!!!!!
  5. mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】
  6. python3 tkinter详解_python tkinter基本属性详解
  7. 计算机与体育教育的关系,体育教学论文:健康教育与体育教育存在的问题研究...
  8. linux无限刷屏代码,linux下如何实现简单刷屏
  9. 表单和字都居中_APP 分享 | 6 款黑科技工具,低调收藏,每一款都很强大!
  10. dataframe 拼接_拼接关系图在石材生产过程中的重要性