内部排序算法
来源:互联网 发布:生化危机6武器数据 编辑:程序博客网 时间:2024/06/04 01:26
内部排序是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列。
1.快速排序
int partition(int a[],int low,int high){ int point; point=a[low]; while (low<high) { while (low<high&&a[high]>=point) { high--; } a[low]=a[high]; while (low<high&&a[low]<=point) { low++; } a[high]=a[low]; } a[low]=point; return low;}void Qsort(int a[],int low,int high){int p;if (low<high){p=partition(a,low,high); Qsort(a,low,p-1);Qsort(a,p+1,high);}}
2.并归排序
void Merging(int *list1,int list1_size,int *list2,int list2_size){int temp[10]; int i,j,k; i=j=k=0; while (i<list1_size&&j<list2_size) { if (list1[i]<list2[j]) {temp[k++]=list1[i++]; } else { temp[k++]=list2[j++]; } } while (i<list1_size) { temp[k++]=list1[i++]; } while (j<list2_size) { temp[k++]=list2[j++]; } for (int m=0;m< list1_size + list2_size;m++) { list1[m]=temp[m]; }}void MergeSort(int a[],int n){if(n>1) { int *list1=a; int list1_size=n/2; int *list2=a+n/2; int list2_size=n-n/2; MergeSort(list1,list1_size); MergeSort(list2,list2_size); Merging(list1,list1_size,list2,list2_size); }}
3.选择排序
void SelectSort(int a[],int n){int i,j,temp;for(i=0;i<n-1;i++){int min=i;for(j=i+1;j<n;j++){ if (a[j]<a[min]){min=j;}}if(min!=i){temp=a[i];a[i]=a[min];a[min]=temp;}}}
4.插入排序
void InsertSort(int a[],int n){int i,j,temp;for(i=1;i<n;i++){if (a[i]<a[i-1]){temp=a[i];for(j=i-1;a[j]>temp;j--){ a[j+1]=a[j];}a[j+1]=temp;}}}5.希尔排序
void InsertSort(int a[],int n){int i,j,temp;int gap=n;do {gap=gap/3+1;for(i=gap;i<n;i++){if (a[i]<a[i-gap]){temp=a[i];for(j=i-gap;a[j]>temp;j-=gap){ a[j+gap]=a[j];}a[j+gap]=temp;}}} while (gap>1);}
6.堆排序
void Heapadjust(int a[],int s,int n){int i,temp;temp=a[s];for (i=2*s;i<=n;i*=2){if (i<n&&a[i]<a[i+1]){i++;} if (temp>=a[i]) { break; } a[s]=a[i]; s=i;} a[s]=temp;}void swap(int a[],int i,int j){int temp;temp=a[i];a[i]=a[j];a[j]=temp;}void HeapSort(int a[],int n){int i;for (i=n/2;i>0;i--){Heapadjust(a,i,n);}for (i=n;i>1;i--){swap(a,1,i);Heapadjust(a,1,i-1);}}7.冒泡排序
void Sort(int a[],int n){int i,j,temp;for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}}
排序算法总结:
阅读全文
0 0
- 内部排序算法比较
- 内部排序算法比较
- 内部排序算法
- 内部排序算法分析
- 各种内部排序算法!
- 内部排序算法比较
- 内部排序算法比较
- 内部排序算法比较
- 内部排序算法小结
- 内部排序算法练习
- 内部排序算法概述
- 内部排序算法小结
- 内部排序算法
- 内部排序算法总结
- 内部排序算法
- 内部排序算法
- c++内部排序算法
- 内部排序算法
- 电脑常用问题集
- Linux内核net/bpf模块的bpf_tail_call()尾调用机制
- 关于进程保活的三两事
- threejs-经纬度转换成xyz坐标的方法
- 解决maven deploy后,别的项目依然无法引用,或引用报错
- 内部排序算法
- 坤驰科技发布高性价比高速数据采集卡QT1140系列
- 二进制漏洞与利用学习
- mysql查询结果保留2位小数不够补0
- 图像镜像_matlab
- 51-数组中重复的数字
- C#异或算法
- 机器学习算法-决策树(续)Python实现
- struts国际化实例---登录例子(中英文切换)