排序总结
来源:互联网 发布:书生商友seo 编辑:程序博客网 时间:2024/06/06 12:35
int mao() //冒泡 从大到小
{
int t;
for ( int i = 0; i <= n-1; ++i)
for ( int j = 0; j <= n-2; ++j)
if (a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
};
}
//冒泡
//每次冒出来剩下的里面最大或最小的
#include <iostream>
int quicksort(int left, int right) //快排
{
int i = left, j = right, mid,t;
if (left > right) return 0;
mid = a[left];
while (i < j)
{
while (a[j] > mid) j--;
while (a[i] < mid) i++;
if (i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a [i];
a[i] = mid;
quicksort( left, i-1);
quicksort( j+1, right);
return 0;
};
//系统内置函数
#include <algorithm>
sort(first,last) //默认从小到大
sort(first,last,cmp)//cmp为自定义bool函数
//找到一个key,使得key两边的一边全比他大,另一边全比他小,再分别递归他两边
归并(求数列的逆序数)
先分再合;分到只有两个数,比较大小,然后再和旁边的一组比较,小的先放入数组,大的再放,以此类推
选择
每回选出剩下的最大(或最小)的数
int cnt = 0; //交换的次数
for (int i = 0; i <= n-2; ++i)
{
int minj = i;
for (int j = i; j <= n-1; ++j)
{
if (a[j] < a[minj])
{
minj = j;
}
}
int t = a[i];
a[i] = a[minj];
a[minj] = t;
if ( i != minj)
{
++cnt;
}
}
插入
前面的数都是有序的,每个新加入的数找到自己的位置插入。
插入排序的优势在于处理相对有序的数列。
int v;
for (int i = 0; i <= n; ++i)
{
v = a[i];
int j = i-1;
while ( j >= 0 && a[j] > v)
{
a[j+1] = a[j];
--j;
}
a[j+1] = v;
} ;
桶排
弄一个大数组,输入I,则a[I]++;
堆排
按位比
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序 -- 总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 排序总结
- 分析golang的slice排序
- 调用request请求返回xml
- 二叉树:前序,后序,中序遍历(递归+非递归);层次(队列)
- ajax的一些小问题
- 元素的显示隐藏
- 排序总结
- [堪称经典]JAVA多线程和并发基础面试问答
- 利用mvc 和数据结合来做mail 邮件系统
- Leetcode——第21题
- 51nod1483-技巧&标记&思维-化学变换
- mark
- 新手村 循环 三连击
- 关于请求跨域及response中Set-Cookie无效问题记录
- mybatis中﹤![CDATA[ ]]> 的使用