排序----冒泡排序的优化_选择排序_插入排序
来源:互联网 发布:澳大利亚学生签证知乎 编辑:程序博客网 时间:2024/06/14 04:37
"test.c"
<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1#include "Sort.h"int main(){int arr[] = {6,3,8,1,4,9,5,0,2,7};int size = sizeof(arr)/sizeof(arr[0]);BubbingSort(arr,size);//SelectSort(arr,size);//InsertSort(arr,size);PrintSort(arr,size);system("pause");return 0;}</span>
"Sort.h"
<span style="font-size:18px;">#ifndef __SORT_H__#define __SORT_H__#include<stdio.h>#include <stdlib.h>#include <assert.h>void SelectSort(int* arr,int size);//选择排序void InsertSort(int* arr,int size);//直接插入排序void BubbingSort(int* arr,int size);//冒泡排序void PrintSort(int* arr,int size);#endif//__SORT_H__</span>
"Sort.c"
<span style="font-size:18px;">#define _CRT_SECURE_NO_WARNINGS 1#include "Sort.h"//void BubbingSort(int* arr,int size)//{//int i = 0;//int j = 0;//int tmp = 0;//assert(arr);////for (i = 0;i < size-1; i++) //排序的趟数//{//for (j = 0;j < size-1-i;j++)//每次排序的个数//{//if (arr[j] > arr[j+1])//升序//{//tmp = arr[j];//arr[j] = arr[j+1];//arr[j+1] = tmp;//}//}//}//}//优化一次后的冒泡排序 优化趟数 优化后的排序算法对已经有序的部分数组值将不再进行排序,减少复杂度 //void BubbingSort(int* arr,int size)//{//int i = 0;//int j = 0;//int tmp = 0;//int flag = 0;//标记//assert(arr);////for (i = 0;i < size-1; i++) //排序的趟数//{//flag = 0;//for (j = 0;j < size-1-i;j++)//每次排序的个数//{//if (arr[j] > arr[j+1])//升序//{//tmp = arr[j];//arr[j] = arr[j+1];//arr[j+1] = tmp;//flag = 1;//如果交换过了那么就将标记变换//}//}//if (flag == 0)//如果经过一趟的排序,没有任何一个数组的值交换,那么表明数组中已经有序//{//break;//}//}//}//优化两次后的冒泡排序 优化趟数里次数的比较void BubbingSort(int* arr,int size){int i = 0;int j = 0;int tmp = 0;int flag = 0;//标记int m = size-i-1;//初始化为冒泡排序比较次数的限制条件int n = 0;assert(arr);for (i = 0;i < size-1; i++) //排序的趟数{flag = 0;for (j = 0;j < m;j++)//每次排序的个数{if (arr[j] > arr[j+1])//升序{tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;flag = 1;//如果交换过了那么就将标记变换n = j; //记录当前交换了数值的下标}}m = n; //将记录下来的下标值赋值给j循环的限制条件if (flag == 0)//如果经过一趟的排序,没有任何一个数组的值交换,那么表明数组中已经有序{break;}}}void SelectSort(int* arr,int size){int i = 0;int j = 0;int min = 0;int tmp = 0;assert(arr);for (i = 0;i < size;i++){min = i;for (j = i+1;j < size;j++){if (arr[min] > arr[j]){min = j;//记住当前最小值的下标值}}tmp = arr[min];//找出最小的值,下标从0开始交换arr[min] = arr[i];arr[i] = tmp;}}void InsertSort(int* arr,int size){int i = 0;int j = 0;int tmp = 0;assert(arr);for (i = 1;i < size;i++)//i=1认为只有一个数字是有序的{if(arr[i-1] > arr[i]){tmp = arr[i]; //保存当前需要排序的值for (j = i; j>0 && arr[j-1] > tmp;j--){arr[j] = arr[j-1];}arr[j] = tmp;}}}void PrintSort(int* arr,int size){int i = 0;assert(arr);for (i = 0;i < size;i++){printf("%d ",arr[i]);}printf("\n");}</span>
0 0
- 排序----冒泡排序的优化_选择排序_插入排序
- 选择排序_冒泡排序
- 排序_冒泡排序
- java冒泡_选择_插入三大排序
- 选择_冒泡 排序法
- 01_选择排序和冒泡排序
- java排序算法(一)_冒泡排序、插入排序、选择排序
- 黑马程序员_常见排序算法:冒泡排序、选择排序和插入排序
- 排序_插入排序
- 排序_插入排序
- 函数_内存结构_数组_排序_选择排序_冒泡排序_折半查找_插入排序_进制转换数组
- 八大排序算法(1)_冒泡排序和选择排序
- 【java学习】排序_冒泡排序+选择排序
- 黑马程序员_数组、冒泡、选择、插入排序法,查找。
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
- 常用排序算法_冒泡,选择,插入,快排
- JAVA_三大排序_选择冒泡插入
- 三种最基本的排序 选择排序 插入排序 冒泡排序
- python中re模块(正则表达式模块)的使用学习
- GCD
- 判断网络类型
- VS2013代码调试:如何避免调试时加载符号
- MFC动态调整对话框控件位置和大小
- 排序----冒泡排序的优化_选择排序_插入排序
- C++ Primer复制控制 13.2 赋值操作符
- studio 2.1 App闪退BUG
- 一个获取w3school上面SQL教程的Python爬虫
- android recycleview使用
- 4.3.认识按键抖动并消除抖动
- SQL注入
- opencv代码段1
- c++中的成员访问级别和派生继承方式