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

网站建设及管理大冶网站开发

网站建设及管理,大冶网站开发,整合营销传播的效果表现为,旅游网站ppt应做的内容1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 1.插入排序 1.1思路 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中#xff0c;直到所有的记录插入完为 止#xff0c;得到一个新的有序序列 1.2实现 //插入排… 1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 1.插入排序 1.1思路 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中直到所有的记录插入完为 止得到一个新的有序序列   1.2实现  //插入排序 void InsertSort(int* a, int n) {for (int i 0; i n - 1; i){// [0, end] 有序插入tmp依旧有序int end i;int tmp a[i 1];while (end 0){if (a[end] tmp){a[end 1] a[end];--end;}else{break;}}a[end 1] tmp;} }2. 希尔排序 2.1思路 希尔排序法又称缩小增量法。希尔排序法的基本思想是先选定一个整数把待排序文件中所有记录分成个组所有距离为的记录分在同一组内并对每一组内的记录进行排序。然后取重复上述分组和排序的工作。当到达1时所有记录在统一组内排好序。 2.2实现  void ShellSort(int* a, int n) {// 1、gap 1 预排序// 2、gap 1 直接插入排序int gap n;while (gap 1){gap gap / 3 1; // 1可以保证最后一次一定是1// gap gap / 2;for (int i 0; i n - gap; i){int end i;int tmp a[end gap];while (end 0){if (a[end] tmp){a[end gap] a[end];end - gap;}else{break;}}a[end gap] tmp;}} }3. 选择排序 3.1思路 每一次从待排序的数据元素中选出最小或最大的一个元素存放在序列的起始位置直到全部待排序的数据元素排完 3.2实现  void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }void SelectSort(int* a, int n) {int begin 0, end n - 1;while (begin end){//找出最大和最小值放在开头和结尾然后beginend--int maxi begin, mini begin;for (int i begin; i end; i){if (a[i] a[maxi]){maxi i;}if (a[i] a[mini]){mini i;}}Swap(a[begin], a[mini]);// 如果maxi和begin重叠修正一下即可//如果maxi和begin重叠可能会重复交换if (begin maxi){maxi mini;}Swap(a[end], a[maxi]);begin;--end;} } 4.堆排序 4.1思路 堆排序 是指利用堆积树堆这种数据结构所设计的一种排序算法它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆排降序建小堆。 不知道堆的可以参考 数据结构堆的实现_元清加油的博客-CSDN博客 4.2实现  //向下调整法 void AdjustDown(int* a, int n, int parent) {int child parent * 2 1;while (child n){// 找出小的那个孩子if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);parent child;child parent * 2 1;}else{break;}} }// 排升序 void HeapSort(int* a, int n) {// 建大堆for (int i (n - 1 - 1) / 2; i 0; --i){AdjustDown(a, n, i);}//堆删除的思想int end n - 1;while (end 0){Swap(a[0], a[end]);AdjustDown(a, end, 0);--end;} } 5.冒泡排序  5.1思路 冒泡排序非常的简单相邻二个数比较大小然后交换即可 5.2实现  void BubbleSort(int* a, int n) {for (int j 0; j n; j){bool exchange false;for (int i 1; i n - j; i){if (a[i - 1] a[i]){int tmp a[i];a[i] a[i - 1];a[i - 1] tmp;exchange true;}}if (exchange false){break;}} }6.快速排序  6.1霍尔快排法 6.1.1思路 取第一个数为key从左右出发右边找小于key的数左边找大于key的数找到交换。直到左边大于右边就交换key和左边的数 6.1.2 实现 void Swap(int* str1, int* str2) {int temp *str1;*str1 *str2;*str2 temp; } int PartSort1(int* a, int left, int right) {int keyi left;while (left right){// 右边找小while (left right a[right] a[keyi]){--right;}// 左边找大while (left right a[left] a[keyi]){left;}Swap(a[left], a[right]);}Swap(a[keyi], a[left]);return left; }void QuickSort(int* a, int begin, int end) {if (begin end)return;int keyi PartSort2(a, begin, end);// [begin, keyi-1] keyi [keyi1, end]QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); } int main() {int arr[] { 6,1,2,7,9,3,4,5,10,8 };QuickSort(arr, 0, 9);for (int i 0; i 9; i){printf(%d , arr[i]);}return 0; } 6.2挖坑法  6.2.1思路 取第一个数为key从左右出发右边找小于key的数把他设立为一个坑位左边找大于key的数把他设立为一个新的坑位。直到左边大于右边就交换key和坑的数 6.2.2实现  // 挖坑法 // [left, right] int PartSort2(int* a, int left, int right) {int key a[left];int hole left;while (left right){// 右边找小while (left right a[right] key){--right;}a[hole] a[right];hole right;// 左边找大while (left right a[left] key){left;}a[hole] a[left];hole left;}a[hole] key;return hole; }void QuickSort(int* a, int begin, int end) {if (begin end)return;int keyi PartSort2(a, begin, end);// [begin, keyi-1] keyi [keyi1, end]QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); } int main() {int arr[] { 6,1,2,7,9,3,4,5,10,8 };QuickSort(arr, 0, 9);for (int i 0; i 9; i){printf(%d , arr[i]);}return 0; } 6.3前后指针法  6.3.1思路 取第一个数为key初始时prev指针指向序列开头cur指针指向prev后一个位置。cur找小与key的数与prev交换 6.3.2实现 // 前后指针法 // [left, right] int PartSort3(int* a, int left, int right) {int prev left;int cur left 1;int keyi left;while (cur right){if (a[cur] a[keyi] prev ! cur){Swap(a[prev], a[cur]);}cur;}Swap(a[prev], a[keyi]);keyi prev;return keyi; } void QuickSort(int* a, int begin, int end) {if (begin end)return;int keyi PartSort2(a, begin, end);// [begin, keyi-1] keyi [keyi1, end]QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); } int main() {int arr[] { 6,1,2,7,9,3,4,5,10,8 };QuickSort(arr, 0, 9);for (int i 0; i 9; i){printf(%d , arr[i]);}return 0; } 7.归并排序 7.1思路 归并排序MERGE-SORT是建立在归并操作上的一种有效的排序算法,该算法是采用 分治法Divide andConquer 的一个非常典型的应用。将已有序的子序列合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。若将两个有序表合并成一个有序表称为二路归并 7.2实现  //归并排序 void _MergeSort(int* a, int begin, int end, int* tmp) {if (begin end)return;int mid (begin end) / 2;// [begin, mid] [mid1, end]_MergeSort(a, begin, mid, tmp);_MergeSort(a, mid 1, end, tmp);// 归并两个区间// ...int begin1 begin, end1 mid;int begin2 mid 1, end2 end;int i begin;while (begin1 end1 begin2 end2){if (a[begin1] a[begin2]){tmp[i] a[begin1];}else{tmp[i] a[begin2];}}while (begin1 end1){tmp[i] a[begin1];}while (begin2 end2){tmp[i] a[begin2];}memcpy(a begin, tmp begin, sizeof(int) * (end - begin 1)); }void MergeSort(int* a, int n) {int* tmp (int*)malloc(sizeof(int) * n);_MergeSort(a, 0, n - 1, tmp);free(tmp); }
http://www.w-s-a.com/news/129351/

相关文章:

  • 百度站长快速收录网站建设完工确认书
  • 企业网站备案代理商建设工程施工合同2013
  • 要学做网站wordpress xss漏洞
  • 白云品牌型网站建设在网上做国际快递淘宝网站
  • 无锡网站建设方式推广软件赚钱的app
  • 如何控制一个网站软件开发wordpress教育插件
  • 网站开发属于软件开发类吗wordpress邮件失败
  • 凡科网站怎么设计win8网站模板
  • 深圳整站seo个人网站建设一般流程
  • 济南网站中企动力wordpress主题ripro
  • 淮北网站建设求职简历怎么做点击图片进网站
  • 自适应网站推广注册公司流程和费用公司注册
  • 电子商务网站建设预算表网站建设卩金手指科杰
  • 广西响应式网站哪家好产品网络推广怎样做
  • 移动网可以上的网站是什么样子的淘宝优惠券网站开发
  • wordpress php设置伊宁seo网站建设
  • 兰陵住房建设局网站wordpress中文标题
  • 福州搜索优化网站个人网页网站制作模板
  • 网站开发分哪几个步骤使用wordpress开发一个页面跳转
  • 网站制作后还能更改么wordpress 近期文章 代码
  • 做一个小网站需要多少钱wordpress集成paypal
  • 加强网站建设管理 及时更新自己设计装修的app
  • 集团网站设计案例网页制作网站开发
  • 怎么优化网站的单个关键词排名惠州品牌网站建设
  • 上海跨境电商网站制作wordpress弃用react
  • phpcms网站模版下载电商网站建设属于研发费用吗
  • 动画毕业设计代做网站高校门户网站建设需要多少钱
  • 网站内链设置wordpress前台特别慢
  • 杭州模板网站建设系统江苏省建设考试网站准考证打印
  • 国家建设执业资格注册中心网站企业手机网站建设机构