Linux C++ 直接选择排序,冒泡排序,快速排序
2024-09-06 00:32:15
选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中。
/*直接选择排序*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={5,4,10,20,12,3,2,1,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int); //计算数组元素个数 for(int i=0;i<size-1;i++)
{
int last = i;
for(int j=i+1;j<size;j++) //选择后面最小元素
{
if(a[j] < a[last])
{
last = j;
}
}
swapp(a[i],a[last]);//交换
} //输出
for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
} return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
冒泡排序思想:比较相邻连个元素大小,选择最大(小)的排序
/*冒泡排序(for循环)*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数 //for循环
for(int i=0;i<size-1;i++) //遍历各个元素
{
for(int j=0; j<size-i; j++) //找出了最大(小)的一个
{
if(a[j+1] < a[j])
swapp(a[j],a[j+1]); //交换最大(小)的一个
}
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*冒泡排序(while循环)*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数 //while循环
int loop = size-1;//最大循环次数
while(loop>0) //
{
int lastExchangeIndex = 0; //标记本次交换最后一对元素的最小小标
for(int i=0; i<loop; i++)
{
if(a[i+1] < a[i])
{
swapp(a[i],a[i+1]);
lastExchangeIndex = i;
}
}
loop = lastExchangeIndex; //标记本次交换最后一对元素的最小小标
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*快速排序*/
#include <iostream>
using namespace std; void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
} int SortSwap(int a[], int left, int right)
{
int &pos = a[right];
while(left < right)
{
while(left <right && a[left] <= pos)
{
++left;
}
while(left < right && a[right] >= pos)
{
--right;
}
swapp(a[left],a[right]);
}
swapp(a[left],pos);
return left;
} void QuickSort(int a[],int left,int right)
{
if(left >= right)
{
return;
} int pos = SortSwap(a,left,right);
QuickSort(a,left,pos - 1);
QuickSort(a,pos + 1,right);
} int main() {
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int); QuickSort(a,0,size-1);
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
} return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
最新文章
- jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
- @SuppressWarnings的参数
- Java-Android【1】-控制手机震动
- 0-js判断电脑或手机登录
- Git基本使用教程
- PHP非阻塞模式 (转自 尘缘)
- 关于Failed to convert property value of type [org.quartz.impl.StdScheduler] to required type [org.springframework.scheduling.quartz.SchedulerFactoryBean
- mysql 索引优化
- Linux下遍历目录及文件,更改权限
- 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发
- java实现文件转换成二进制存储与取出
- YAHOO 34 条前端优化建议
- Android官方技术文档翻译——IntelliJ 项目迁移
- VMware虚拟机安装Linux系统
- PopupWindow计算弹出位置
- 用栈来实现队列的golang实现
- Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
- Kibana 搜索语法
- 模板&#183;点分治(luogu P3806)
- [development][vim] vim显示空白字符