#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void getArr(int arr[],int n) //产生随机数
{int i = 0;unsigned sr = time(NULL);srand(sr);for (i = 0; i < n ; i++){arr[i] = 24 +rand()%10;}printf("random arr is: \n");
}void printfArr(int arr[],int n)
{int i;for ( i= 0; i < n; i++){printf("%d\t",arr[i]);  // \t水平制表符当前位置移动到下一个tab位置 }                           // \r回车 将当前位置移动到下一行的开头printf("\n");              // \f换页
}void bubbleSort(int arr[],int n)
{int change = 0;int line,line2,temp;for (line = 0; line < n-1;line++){for (line2 = 0; line2 < n-line-1; line2++) //对比上层次记循环少一{if(arr[line2]>arr[line2+1]){temp = arr[line2];arr[line2] = arr[line2+1];arr[line2+1] = temp;change++;}}}printf("change number of times:%d bulleSort is:\n",change);
}
void selectSort(int arr[],int n)
{int change2 = 0;int sign;//标记当前int line,tline,temp;for( line = 0; line < n-1;line++){   sign = line;for(tline = line+1; tline < n; tline++) //遍历序列一个一个找 发现一个换一个sign 换一个line{if(arr[sign]>arr[tline]){sign = tline;change2++;}}if(sign!=line){temp = arr[line];arr[line] = arr[sign];arr[sign] = temp;change2++;}}printf("change number of times:%d selectSort is:\n",change2);
}
int partition(int arr[],int begin,int end)
{if(begin > end){return 0;}int key = arr[begin];while (begin<end){while (begin<end&&arr[end]>=key){end--;}    arr[begin] = arr[end];while (begin<end &&arr[begin]<=key){begin++;}arr[end] = arr[begin];}arr[begin] = key;return begin;
}
void quickSort(int arr[],int begin,int end)
{if(begin < end){int pos = partition(arr, begin, end);quickSort(arr, begin, pos-1);quickSort(arr, pos+1, end);}
}
void insertSort(int arr[],int n)
{int change = 0;int i, sign, index;for( i = 1;i < n;i++){sign = arr[i];index = i - 1;while(index >= 0&&arr[index]>sign){change++;arr[index + 1] = arr[index];index--;}arr[index +1 ] = sign;}printf("change number is %d insertSort:\n",change);
}
int main()
{int arr[10];int arrtest[10]={9,8,7,6,5,4,3,2,1,-3};int len = sizeof(arr)/sizeof(int);getArr(arr,len);printfArr(arr,len);
//  bubbleSort(arrtest,len);
//  selectSort(arrtest,len);
//  quickSort(arr,0,len-1);insertSort(arrtest,len);insertSort(arr,len);printfArr(arrtest,len);printfArr(arr,len);
}

几个简单的排序方式1相关推荐

  1. 简单暴力的排序方式:直接排序

    俗话说:一方水土养一方人,不同的环境,会造成不同的结果. 比如南方人和北方人,虽然都是伟大中国的人民,但身体外形,处世态度,有着天壤之别.南方人温文而雅,北方人五大三粗. 南方人的处世态度:能吵吵的, ...

  2. 五种排序方式gif展示【python】

    简述 有五种排序方式. 文章目录 简述 排序 简单排序 冒泡排序 选择排序 归并排序 快速排序 排序 简单排序 import numpy as np import matplotlib.pyplot ...

  3. 查询数据的排序的位置_简单选择排序C++实现

    简单选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,第一次从下标为0的开始,将下标为0的这个数与后面的n-1个进行比较:找出最小或者最大的放在下标为0的这个位置 ...

  4. 通讯录排序 (20分)_算法入门篇:简单的排序算法

    作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...

  5. 9个元素换6次达到排序序列_排序总结:二大种,六小种排序方式

    0.各种排序性能介绍 一.非线性时间比较排序 1.交换排序 1.1.冒泡排序 1.2.快速排序 2.插入排序 2.1.简单插入排序 2.2.希尔排序 3.选择排序 3.1.简单选择排序 3.2.堆排序 ...

  6. 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树

    文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...

  7. 简单选择排序(Simple Selection Sort)

    介绍: 简单选择排序的工作方式突出"选择"二字,每次从待排序数据中选择符合条件的元素放在已排序元素末尾.对于少量元素的排序,简单选择排序是一个有效的算法. 思想: 第一次从待排序的 ...

  8. 【排序综合】直接插入排序,希尔排序,快速排序,堆排序,冒泡排序,简单选择排序的简介,实现和算法复杂度分析

    目录 1. 直接插入排序 1.1 直接插入排序简介 1. 什么是直接插入排序 2. 排序思想 1.2 排序实现 1. 排序代码 2. 复杂度分析: 3. 运行结果: 1.3 学习链接 2. 希尔排序( ...

  9. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

最新文章

  1. Python读excel——xlrd
  2. 20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南07
  3. Vue中render: h = h(App)的含义
  4. 山石网科发布重磅容器安全产品“山石云铠”,云安全版图再下一城
  5. gulp不生成打包文件_命令行输入gulp 无法生成压缩文件
  6. 一个简单demo通过em实现‘响应式设计、em、文字图标svg’
  7. 网络流之最小点权覆盖和最大点权独立集学习
  8. mysql循环插入语句_sql循环插入的语句写法
  9. 【深度学习】【ICLR2019】DARTS代码解读
  10. 帕累托法则(Pareto Principle)、二八定律、帕累托定律、最省力法则、不平衡原则、犹太法则、马特莱法则
  11. fiddler 证书错误
  12. Django Rest_framework 1(RESTRESTful)
  13. 图像处理_ISP_坏点矫正
  14. 阴阳师手游服务器维护,《阴阳师》手游3月20日维护更新公告
  15. BIM家装族库丨艺术家具族
  16. Excel提取单元格中的数字
  17. 软件使用小技巧-Linux疑难杂症
  18. 光放接头形式 SC/APC; SC/PC
  19. Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
  20. Java8-Stream流整合(1)

热门文章

  1. oracle的pdb,oracle pdb基本管理
  2. python中pow_python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(n)?
  3. Android开发之RecyclerView嵌套ListView自动计算高度的方法
  4. 弹窗时候禁止页面滚动
  5. rsync定时任务引起cpu负载高
  6. 商城项目:装nginx时碰到的各种问题
  7. Atitit.json类库的设计与实现 ati json lib
  8. 修改Mysql默认 编码
  9. CSS3手机端侧滑菜单 4种滑动菜单特效
  10. 利用UDEV服务解决RAC ASM存储设备名