#include<stdio.h>
#include <iostream>
using namespace std;
//选择排序的理解:每次循环n-1次,每一次找出一个最大或者最小的值并记录,当每次循环结束时,将找到的值放在末尾或者首部,然后继续循环
void swap(int *a, int *b) //元素交换
{
int temp = ;
temp = *a;
*a = *b;
*b = temp;
} int main()
{
int a[] = { , , , }; //定义一个int类型数组 //选择排序
for (int i = ; i <; i++)
{
int min1 = i; //定义一个变量赋值为i,表示当前循环中最小的值的下标,表示最小值在数组中所对应的的位置下标
for (int j = i + ; j < ; j++) //定义一个for循环,j的初始值为当前循环的第二个元素
{
if (a[j] < a[min1])//每一次循环,拿当前循环中第二个元素与后面的元素进行对比,如果发现比后面的元素小,则记录当前较小元素所在的数组下标,并赋值给min1
{
min1 = j;
}
}
if (min1 != i)
//当循环结束发现min的值并不是最后一个值时,则将当前循环中最小的值,与当前循环中的第一个元素的值进行交换。如果
//如果当前的min1存储的值是最后一次循环的值,并且未发生改变,则表示该数值已经是最大,则表示排序已经完成,直接跳出循环
{
swap(&a[min1], &a[i]); }
} return ;
}

插入排序

#include<stdio.h>
#include <stdlib.h>
#include <time.h> int* insert(int * p)
{
int i;
int j;
int temp; //定义一个基准值
for (i = ; i < ; i++)
{
temp = p[i]; //
j = i - ; while (j >= && p[j]>temp) //如果当前值大于0 并且基准值小于当前的值,则将元素像后挪
{
p[j + ] = p[j];
j--;
}
p[j + ] = temp;
} for (int i = ; i < ; i++)
{
printf("%d ",p[i]) ;
}
return p;
} int main()
{ int arr[] = { };
srand((unsigned)time(NULL)); for (int i = ; i < ; i++)
{
arr[i] = rand() % ;
}
int* arr1=insert(arr); return ;
}

最新文章

  1. 用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REM_addr
  2. Entity Framework Code First数据库自动更新
  3. Git工作流总结
  4. iOS 公司开发者账号申请
  5. 在Function对象上扩展method方法
  6. js中constructor的作用
  7. linux 安装Gauss09 GaussView
  8. 关于IP网段间互访的问题—路由是根本(转)
  9. Mybatis执行Executor(一)
  10. Cookie与 Session使用详解
  11. 《Effective C++》定制new和delete:条款49-条款52
  12. ssh反向代理
  13. Mongodb系列- CRUD操作介绍
  14. Linux磁盘挂载
  15. OpenStack 安装:keystone服务
  16. mySQL配置文件、备份与恢复
  17. 实战C++对象模型之成员函数调用
  18. PHP中的一些常用函数
  19. hibernate查询竟然有6种方法
  20. JVM学习记录-线程安全与锁优化(一)

热门文章

  1. top和margin-top的区别
  2. Java IO: Buffered和Data
  3. JAVA数据结构——单链表
  4. PHP--foreach的问题
  5. echo追加和覆盖
  6. mysql表关联问题(第二卷:外键1对多之2)
  7. 2015-09-14-初级vector
  8. ionic2踩坑之文本域自适应高度(自定义指令,适用angular2)
  9. 链终止法|边合成边测序|Bowtie|TopHat|Cufflinks|RPKM|FASTX-Toolkit|fastaQC|基因芯片|桥式扩增|
  10. linux安装swoole扩展