笔试题汇集之排序算法(C/C++)
来源:互联网 发布:表情包制作软件 编辑:程序博客网 时间:2024/06/14 05:50
void swap(int* p, int* q) {
int temp;
temp = *p;
*p = *q;
*q = temp;
}
//冒泡排序
void sort(int* a, int n) {
for(int i=0; i<n-1;++i)
for(int j=0; j<n-i-1;++j)
if(a[j] > a[j+1])
swap<int>(a+j,a+j+1);
}
//选择排序
void sort2(int* a, int n) {
for(int i=0; i<n-1;++i) {
int temp = i;
for(int j=i; j<n; ++j){
if(a[temp] > a[j])
temp = j;
}
if(temp != i)
swap(a+temp, a+i);
}
}
//插入排序
void sort3(int* a, int n) {
for(int i=1; i<n; ++i){
for(int j=0; j<i; ++j){
if(a[i] < a[j]) {
swap(a+i, a+j);
for(int k=i; k>j+1;--k) {
swap(a+k, a+k-1);
}
break;
}
}
cout << "第" << i << "遍:";
print(a, n);
}
}
//快速排序(一)
void sort4(int* a, int n) {
if(n <= 1)
return;
int left=0;
int right=n-1;
while(left<right) {
while(left<right&& a[left] <= a[right])
--right;
swap(a+left, a+right);
while(left<right&& a[left] <= a[right])
++left;
swap(a+left, a+right);
}
sort(a, left);
sort(a+left+1, n-left-1);
}
//快速排序(二)
void sort5(int* a, int n) {
if(n <= 1)
return;
int left=0;
int right=n-1;
int temp = a[0];
while(left<right) {
while(left<right&& temp <= a[right])
--right;
a[left] = a[right];
while(left<right&& a[left] <= temp)
++left;
a[right] = a[left];
}
a[left] = temp;
print(a, n);
sort5(a, left);
sort5(a+left+1, n-left-1);
}
- 笔试题汇集之排序算法(C/C++)
- 笔试题汇集之常见算法篇(C/C++)
- 笔试题汇集之常见算法篇(C/C++)
- 笔试题汇集之链表篇(C/C++)
- 笔试题汇集之大数处理篇(C/C++)
- 笔试题汇集之大数处理篇(C/C++)
- 排序算法之冒泡排序(C/C++)
- 排序算法之希尔排序(C/C++)
- C++/java算法笔试题
- C语言笔试算法题
- 算法实现之希尔排序(C++)
- 算法之排序算法:插入排序(C++)
- C语言之排序算法
- 算法-排序(C#)
- 算法笔试面试高频题之二-(排序算法)
- 笔试题总结之字符串篇(C/C++)
- 八大排序算法之二希尔排序(C语言)
- 排序算法之插入排序(C语言实现)
- 分隔符的应用【日期处理问题】
- lein中如何使用已经编译好的class文件
- 位压缩
- 采用绝对路径方式解决路径问题---MyEclipse提供的解决方案
- 【读书笔记】编程之美算法 - CPU占有率问题(一)
- 笔试题汇集之排序算法(C/C++)
- fread函数的返回值
- Android进阶2之WebView(浏览器)
- sql server只设置了Windows身份验证,没有设置sa登录,修改登录方式
- fedora16安装mysql
- 使用jdbc连接sql2008(jtds-1.2.jar)
- 解决RedHat中ifconfig命令不能使用的问题
- 学习笔记——XML Schema定义属性
- RHEL5.5下配置Centos的yum源(转)