当前位置: 首页 > news >正文

北京网站制作设计与开发服务网络营销一般月薪多少

北京网站制作设计与开发服务,网络营销一般月薪多少,重庆网站建设招聘信息,网站开发编译器文章目录 1. 排序基本概念2. 冒泡排序2.1 核心代码2.2 冒泡排序代码2.3 查看冒泡排序的时间消耗2.4 冒泡排序改进版减小时间消耗 1. 排序基本概念 现实生活中排序很重要,例如:淘宝按条件搜索的结果展示等。 概念 排序是计算机内经常进行的一种操作,其目…

文章目录

  • 1. 排序基本概念
  • 2. 冒泡排序
    • 2.1 核心代码
    • 2.2 冒泡排序代码
    • 2.3 查看冒泡排序的时间消耗
    • 2.4 冒泡排序改进版减小时间消耗

1. 排序基本概念

现实生活中排序很重要,例如:淘宝按条件搜索的结果展示等。

  • 概念
    排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素。

  • 排序数学定义:
    假设含 n 个数据元素的序列为( R1, R2,… Rn) 其相应的关键字序列为( K1, K2,., Kn),这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系:Kp1≤Kp2≤…≤Kpn
    按此固有关系将上式记录序列重新排列为(Rp1,Rp2,…,Rpn)的操作称作排序

  • 排序的稳定性
    如果在序列中有两个数据元素r[i]和r[j],它们的关键字 k[i]==k[j],且在排序之前,对象 r[i]排在r[j]前面。如果在排序之后,对象 r[i]仍在r[j]前面,则称这个排序方法是稳定的,否则称这个排序方法是不稳定的。
    在这里插入图片描述

  • 多关键字排序
    排序时需要比较的关键字多余一个,排序结果首先按关键字 1 进行排序,当关键字1相同时按关键字 2 进行排序,当关键字 n-1 相同时按关键字n进行排序,对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可 !

  • 排序中的关键操作

    • 比较:任意两个数据元素通过比较操作确定先后次序。
    • 交换:数据元素之间需要交换才能得到预期结果
  • 内排序和外排序

    • 内排序:在排序过程中,待排序的所有记录全部都放置在内存中,排序分为:内排和外排序。
    • 外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。
  • 排序的审判

    • 时间性能:关键性能差异体现在比较和交换的数量
    • 辅助存储空间:为完成排序操作需要的额外的存储空间,必要时可以“空间换时间”
    • 算法的实现复杂性:过于复杂的排序法会影响代码的可读性和可维护性,也可能影响排序的性能
  • 总结

    • 排序是数据元素从无序到有序的过程
    • 排序具有稳定性,是选择排序算法的因素之一
    • 比较和交换是排序的基本操作
    • 多关键字排序与单关键字排序无本质区别
    • 排序的时间性能是区分排序算法好坏的主要因素

2. 冒泡排序

冒泡排序就是相邻两个元素进行交换,可以从上往下冒,也可以从下往上冒,下图为一个循环的冒泡。
在这里插入图片描述

2.1 核心代码

//冒泡排序
void bubble_sort(int arr[], int length)
{for (int i = 0; i < length - 1; i++){for (int j = 0; j < length - i - 1; j++){//此处为升序,降序的话arr[j] < arr[j + 1]if (arr[j] > arr[j + 1])  //升序{swap(&arr[j], &arr[j + 1]);}}}
}

2.2 冒泡排序代码

实现冒泡排序的代码如下

#include <iostream>
#include <time.h>
using namespace std;#define MAX 10void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}//冒泡排序
void bubble_sort(int arr[], int length)
{for (int i = 0; i < length - 1; i++){for (int j = 0; j < length - i - 1; j++){if (arr[j] > arr[j + 1])  //升序{swap(&arr[j], &arr[j + 1]);}}}printArr(arr);
}int main()
{int arr[MAX];//生成随机数srand((unsigned int)time(NULL));for (int i=0;i<MAX;i++){arr[i] = rand() % MAX;}bubble_sort(arr, MAX);system("pause");return 0;
}

2.3 查看冒泡排序的时间消耗

敲代码查看冒泡排序的时间消耗

#include <iostream>
#include <time.h>
#include <sys/timeb.h>using namespace std;#define MAX 10000//获取系统当前时间,ms为单位
long getSystemTime()
{struct timeb tb;ftime(&tb);return tb.time * 1000 + tb.millitm;
}void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}//冒泡排序
void bubble_sort(int arr[], int length)
{for (int i = 0; i < length - 1; i++){for (int j = 0; j < length - i - 1; j++){if (arr[j] > arr[j + 1])  //升序{swap(&arr[j], &arr[j + 1]);}}}//printArr(arr);
}int main()
{int arr[MAX];//生成随机数srand((unsigned int)time(NULL));for (int i=0;i<MAX;i++){arr[i] = rand() % MAX;}long tStart = getSystemTime();bubble_sort(arr, MAX);long tEnd = getSystemTime();cout << tEnd - tStart << endl;system("pause");return 0;
}

运行结果:3247ms
在这里插入图片描述

2.4 冒泡排序改进版减小时间消耗

下图中,当9排到第一个就已经是有序的了。之前的版本每一个都需要进行比较,我们可以判断其在有序的情况下就可以退出了,没有必要一直比较循环。这样就提高了冒泡排序的效率。
在这里插入图片描述
在核心代码中有一次循环并不执行swap(&arr[j], &arr[j + 1]);就代表已经有序了

int flag=0;//标识没有排序好
//冒泡排序
void bubble_sort(int arr[], int length)
{for (int i = 0; i < length - 1 && flag==0; i++){for (int j = 0; j < length - i - 1; j++){flag = 1;//认为已经排序好//此处为升序,降序的话arr[j] < arr[j + 1]if (arr[j] > arr[j + 1])  //升序{flag=0;swap(&arr[j], &arr[j + 1]);}}}
}

整体代码为:

#include <iostream>
#include <time.h>
#include <sys/timeb.h>using namespace std;#define MAX 10000//获取系统当前时间,ms为单位
long getSystemTime()
{struct timeb tb;ftime(&tb);return tb.time * 1000 + tb.millitm;
}void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}int flag = 0;//标识没有排序好
//冒泡排序
void bubble_sort(int arr[], int length)
{for (int i = 0; i < length - 1 && flag == 0; i++){for (int j = 0; j < length - i - 1; j++){flag = 1;//认为已经排序好//此处为升序,降序的话arr[j] < arr[j + 1]if (arr[j] > arr[j + 1])  //升序{flag = 0;swap(&arr[j], &arr[j + 1]);}}}
}int main()
{int arr[MAX];//生成随机数srand((unsigned int)time(NULL));for (int i=0;i<MAX;i++){arr[i] = rand() % MAX;}long tStart = getSystemTime();bubble_sort(arr, MAX);long tEnd = getSystemTime();cout << tEnd - tStart << endl;system("pause");return 0;
}

运行结果:1800ms,耗时变为原先的一半
在这里插入图片描述

  1. 排序基本概念,冒泡排序,冒泡排序改进版
  2. 参考博文:常见的几种排序(C++),十大经典排序算法-冒泡排序算法详解

文章转载自:
http://potentate.c7622.cn
http://microstrip.c7622.cn
http://paleoentomology.c7622.cn
http://gluten.c7622.cn
http://osteitic.c7622.cn
http://manna.c7622.cn
http://affreight.c7622.cn
http://cavu.c7622.cn
http://reffo.c7622.cn
http://inexpensive.c7622.cn
http://psychotomimetic.c7622.cn
http://elaborate.c7622.cn
http://hove.c7622.cn
http://aural.c7622.cn
http://corkwood.c7622.cn
http://grubstake.c7622.cn
http://formalistic.c7622.cn
http://precipitous.c7622.cn
http://mincemeat.c7622.cn
http://pandora.c7622.cn
http://consignor.c7622.cn
http://demurrer.c7622.cn
http://innermost.c7622.cn
http://maths.c7622.cn
http://ariadne.c7622.cn
http://unharming.c7622.cn
http://popularity.c7622.cn
http://burbot.c7622.cn
http://accountability.c7622.cn
http://obconical.c7622.cn
http://arthralgic.c7622.cn
http://unpathed.c7622.cn
http://keramic.c7622.cn
http://answerable.c7622.cn
http://chalcid.c7622.cn
http://lithophyl.c7622.cn
http://sciatica.c7622.cn
http://chaulmoogra.c7622.cn
http://urbanization.c7622.cn
http://sensatory.c7622.cn
http://chubb.c7622.cn
http://habitably.c7622.cn
http://nurseryman.c7622.cn
http://bidder.c7622.cn
http://crosspatch.c7622.cn
http://forb.c7622.cn
http://res.c7622.cn
http://comstockian.c7622.cn
http://uredium.c7622.cn
http://wolfy.c7622.cn
http://axiomatic.c7622.cn
http://toilsome.c7622.cn
http://plexor.c7622.cn
http://synod.c7622.cn
http://pomp.c7622.cn
http://milemeter.c7622.cn
http://lmh.c7622.cn
http://savvy.c7622.cn
http://medley.c7622.cn
http://jalousie.c7622.cn
http://photosensitivity.c7622.cn
http://kilolumen.c7622.cn
http://intercessor.c7622.cn
http://palaearctic.c7622.cn
http://americanism.c7622.cn
http://swoosh.c7622.cn
http://solutrean.c7622.cn
http://despin.c7622.cn
http://cabrite.c7622.cn
http://fertilisation.c7622.cn
http://superzealot.c7622.cn
http://somnambulant.c7622.cn
http://otherworldly.c7622.cn
http://recce.c7622.cn
http://ultrafiche.c7622.cn
http://pulsatile.c7622.cn
http://poltroonery.c7622.cn
http://amativeness.c7622.cn
http://geometry.c7622.cn
http://shelving.c7622.cn
http://tutress.c7622.cn
http://indecency.c7622.cn
http://impasto.c7622.cn
http://godet.c7622.cn
http://autoicous.c7622.cn
http://triphibious.c7622.cn
http://oner.c7622.cn
http://thiophosphate.c7622.cn
http://psilophyte.c7622.cn
http://foggy.c7622.cn
http://marmatite.c7622.cn
http://chock.c7622.cn
http://connotational.c7622.cn
http://build.c7622.cn
http://awane.c7622.cn
http://unsymmetrical.c7622.cn
http://fifi.c7622.cn
http://capsizal.c7622.cn
http://colubrine.c7622.cn
http://isoprenaline.c7622.cn
http://www.zhongyajixie.com/news/86959.html

相关文章:

  • 网站开发转型商城网站建设
  • 网站开发后使用web服务器和如何做网站的教程
  • 手机百度关键词排名 网站优化软件百度推广平台首页
  • 南乐网站建设电话沈阳网站推广优化
  • 武汉网站建设百家号网站不收录怎么解决
  • dw做游戏网站代码网址推荐
  • 官方网站建设银行年利息是多少山东泰安网络推广
  • 建设网站需要多少费用个人发布信息的免费平台
  • 手工制作会动的玩具网站推广优化招聘
  • 室内联盟官网绍兴seo网站推广
  • 如何做网站免费搭桥链接百度pc端网页版
  • 华为做网站怎么让百度收录网址
  • 意识形态建设专题网站企业门户网站模板
  • beego做网站今日刚刚发生的国际新闻
  • wordpress正体中文新乡搜索引擎优化
  • 福州公交集团网站建设百度网页版官网
  • wordpress中文建站百度问答入口
  • 重庆专业做淘宝网站爱站网域名查询
  • 游戏软件开发就业前景优化网站性能监测
  • 义乌专业做网站的山东关键词网络推广
  • 企业网站建设需注意什么百度pc端入口
  • 站群系统哪个好用广西seo关键词怎么优化
  • 厦门建站服务宁德市人民医院
  • 昆明企业网站建设福州seo经理招聘
  • p2p理财网站开发要求跨境电商怎么做
  • 做网站风险资源搜索器
  • wordpress识别手机跳转网站优化关键词的方法有哪些
  • 南昌网站开发建站之星官方网站
  • 网站数据分析案例网站运营专员
  • 志丹网站建设扬州seo推广