排序_交换_随机
来源:互联网 发布:空间数据库设计 编辑:程序博客网 时间:2024/05/24 06:45
涉及知识点:
1. 冒泡排序
2. 选择排序
3. 不使用第三个变量,交换两个变量
4. 随机数组生成
5. 预定义变量
/************************************************************************* 名 Sort.c* 功 能:顺序表* 描 述:排序算法* 作 者:JarvisChu* 时 间:2012-10-22* 修 订:无。************************************************************************/#include <stdio.h>#include <stdlib.h> #include <time.h>#define BUBBLE_SORT//#define SELECT_SORTtypedef int SWAP_TYPE;//交换两个数,不使用第三个变量void swap(int &a,int &b,SWAP_TYPE type){switch(type){case 1://利用加减法a = a + b;b = a - b;a = a - b;break;case 2://利用一个数异或本身等于0和异或运算符合交换率a = a ^ b;b = a ^ b;a = a ^ b;break;case 3://乘除a = a * b; b = a / b; a = a / b;break;case 4://不常见方法1a = a + b - (b = a);break;case 5://不常见方法2b = a + (a = b)*0;break;default:break;}}//生成随机数组void RandomArray(int arr[], int size){int i;time_t t;srand((unsigned)time(&t)); //随机时间种子 stdlib.h 中for(i=0;i<size;i++){arr[i] = rand()%100;//[0, RAND_MAX(0x7fff)]间的随机整数 }}//打印数组void Print(int arr[], int size){int i;for(i=0;i<size;i++){printf("%-4d",arr[i]);}printf("\n");}//冒泡排序void BubbleSort(int* arr, int size){int i,j;for(i=0;i<size-1;i++)//控制排序趟数,size-1 趟{for(j=0;j<size-i;j++){if(arr[j]>arr[j+1])//从小到大排序{swap(arr[j],arr[j+1],1);//交换两个数}}}}//选择排序void SelectSort(int* arr,int size){int i,j;for(i=0;i<size;i++){for(j=i+1;j<size;j++){if(arr[i]>arr[j]){swap(arr[i],arr[j],2);}}}}int main(){int arr[10];RandomArray(arr,10);//生成随机数组Print(arr,10);//打印原始数组#ifdef BUBBLE_SORTBubbleSort(arr,10);#elseSelectSort(arr,10);#endifPrint(arr,10);printf("-----------------------\n");//测试交换int a = 10,b = 20;swap(a,b,1);printf("%d %d\n",a,b);swap(a,b,3);printf("%d %d\n",a,b);swap(a,b,4);printf("%d %d\n",a,b);swap(a,b,5);printf("%d %d\n",a,b);printf("-----------------------\n");printf("%s\n %s %s\n",__FILE__,__DATE__,__TIME__);return 1;}
- 排序_交换_随机
- 黑马程序员_交换排序
- 排序算法-交换排序_冒泡排序
- 排序算法-交换排序_快速排序
- 数据结构复习笔记01_排序算法_交换排序
- 涉及_map排序_随机字符串
- 分治法_随机快速排序
- 排序高级之交换排序_冒泡排序
- 排序高级之交换排序_鸡尾酒排序
- 排序高级之交换排序_奇偶排序
- 排序高级之交换排序_快速排序
- 排序高级之交换排序_梳排序
- 排序高级之交换排序_臭皮匠排序
- 排序算法_快速排序、随机快速排序
- 178_冒泡排序的交换次数(逆序数)
- 数据结构_交换数据
- 蓝桥杯_交换瓶子
- 随机过程_马尔科夫过程_马尔科夫链
- 程序中文乱码问题解决大全
- 在cpp文件中使用类的静态static数据报连接错(LNK2001)
- 如何在Windows Phone 7上发送短信
- windows与Linux下socket的不同
- linux下vi命令大全
- 排序_交换_随机
- 22.有4张红色的牌和4张蓝色的牌,主持人先拿任意两张
- 数据库- 类型转换
- 关于 捕获异常 技巧 自己总结!!!!!!!!
- Lisp.中止(Aborts)
- 解析xml,并通过xml生成pdf文档
- UVa 10405
- 【java】IO流学习总结
- android 获取手机信息