版权声明: https://blog.csdn.net/qq_40860934/article/details/85229183
-
memset用法
包含cstring
memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。
memset(s,0,sizeof(int)*n); -
malloc用法
包含cstdlib 动态申请数组 -
快速排序
1.设2个“哨兵”i,j ;用temp记录基数
2.j先走 找到小于基数的 停下
3.i走 找到大于基数的 停下
4.i小于j(不相遇 ) 两者数据交换
5.继续
6.最后相遇结束 把第一个位置和相遇位置的 交换
6.内部递归->二分 左边递归 右边递归
void quicksort(int *a,int left,int right)
{
if(left>right) return;
int i=left,j=right;
int temp=a[i];
while(i<j)
{
while(i<j&&a[j]>=temp) j--;
while(i<j&&a[i]<=temp) i++;
if(i<j)
{
int t=a[j];
a[j]=a[i];
a[i]=t;
}
}
a[left]=a[i]; //第一个位置覆盖当前元素
a[i]=temp; //当前位置写入基数
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
- 去重排序
1.先去重再排序 散列思想 出现过的位置记1 判断输出 O(n+max)
2.先排序再去重 相同的以及集中在一起了 从第2个位置开始 判断前后元素不同才输出 时间重点在排序算法上