- 浏览: 40647 次
- 性别:
- 来自: 大连
最新评论
最近用c++简单实现了一些排序算法,记下来,以便以后用到
结果[img]
[/img]
//合并排序全代码 void merge (int a[], int low, int high) { int i, j, k = -1; for (i=low, j=(low+high)/2+1; i<=(low+high)/2||j<=high; ) { if ( i>(low+high)/2 ) { b[++k]=a[j++]; } else if (j>high) { b[++k]=a[i++]; } else if (a[i]>=a[j]) { b[++k]=a[j++]; } else b[++k]=a[i++]; } k=0; for(i=low; i<=high; i++) { a[i]=b[k++]; } } void mergeSort(int a[], int low, int high) { if ( high > low) { mergeSort(a, low, (low+high)/2); mergeSort(a, 1+(low+high)/2, high); merge(a, low, high); } } //直接插入排序 void insertSort(double a[],int n) { int i,j; double k; for(i=1;i<n;i++) { if(a[i]<a[i-1]) { k=a[i]; for(j=i-1;a[j]>k && j>=0;j--) a[j+1]=a[j]; a[j+1]=k; } } } //折半插入排序 void binsertSort(double a[],int n) { int i,j,m,low,high; double k; for(i=1;i<n;i++) { k=a[i]; low=0; high=i-1; while(low<=high) { m=(low+high)/2; if(k<a[m]) high=m-1; else low=m+1; } for(j=i-1;j>=high && j>=0;j--) a[j+1]=a[j]; a[high+1]=k; } } //快速排序 //分割函数 int Partition(double a[],int n,int low,int high) { double k=a[low]; while(low<high) { while(low<high && a[high]>=k)--high; a[low]=a[high]; while(low<high && a[low]<=k)++low; a[high]=a[low]; } a[low]=k; return low; } void quitSort(double a[],int n,int low,int high) { int key; if(low<high) { key=Partition(a,n,low,high); quitSort(a,n,low,key-1); quitSort(a,n,key+1,high); } } //堆排序 //筛选算法 void sift(double a[],int k,int m) { int i=k,j=i*2; while(j<=m-1) { if(j<m && a[j]<a[j+1])j++; if(a[i]<a[j]) { double temp=a[i]; a[i]=a[j]; a[j]=temp; i=j; j=i*2; } else break; } } void heapSort(double a[],int n) { int k=(n-1)/2; for(int i=k;i>=1;i--) sift(a,i,n-1); for(int j=n-1;j>1;j--) { double temp=a[1]; a[1]=a[j]; a[j]=temp; sift(a,1,j-1); } } int main() { int i; double a[9]={23,56,12,3,58,62,18,36,18}; double b[9]={23,56,12,3,58,62,18,36,18}; double c[9]={23,56,12,3,58,62,18,36,18}; int d[9]={23,56,12,3,58,62,18,36,18}; double e[10]={0,23,56,12,3,58,62,18,36,18}; cout<<"直接插入排序"; insertSort(a,9); for(i=0;i<9;i++) cout<<a[i]<<" "; cout<<endl; cout<<"折半插入排序"; binsertSort(b,9); for(i=0;i<9;i++) cout<<b[i]<<" "; cout<<endl; cout<<"合并排序"; mergeSort(d,0,8); for(i=0;i<9;i++) cout<<d[i]<<" "; cout<<endl; cout<<"快速排序"; quitSort(c,9,0,8); for(i=0;i<9;i++) cout<<c[i]<<" "; cout<<endl; cout<<"堆排序"; heapSort(e,10); for(i=0;i<10;i++) cout<<e[i]<<" "; return 0; }
结果[img]
[/img]
public static void sort(int[] array,int size) { int i,j,temp; for(i=0;i<size;i++) { for(j=0;j<size-i-1;j++) { if(array[j]>array[j+1]) { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } System.out.println(Arrays.toString(array)); } System.out.println("第"+i+"次----------------------"); } }
发表评论
-
c++操作符优先级总结
2013-12-03 14:47 757优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有 ... -
Qt状态机实例
2013-12-03 14:01 1062#include <QApplication> ... -
c++数据类型的隐形转换
2013-09-02 09:51 1637(1)隐式转换发生的时机:当传递给操作符或者函数的参数与指定类 ... -
C中的野指针
2013-08-30 16:11 1001讨论一 什么是野指针 ... -
STL学习(转)
2012-08-28 15:38 1395STL就是Standard Template Libr ... -
STL详解
2012-08-28 14:33 1700STL概述 STL的一个重要 ... -
c++的三种继承(转)
2012-08-23 18:47 1031http://blog.csdn.net/wang_lime ... -
MFC OpenGL标签云 (转)
2012-08-22 11:21 1233初识标签云是在去年年末,一看到这个应用我就特别感兴趣。还记 ... -
MFC中ADO方式操作数据库实例(转)
2012-08-22 11:12 2397连接ACCESS为例: //头文件 #pragma on ... -
派生类的构造函数(转)
2012-08-20 18:05 940派生类的数据成员由所 ... -
元算符重载时友元函数和成员函数的选择
2012-08-18 20:14 1375一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好 ... -
C++面试题(转)
2012-08-16 17:25 7891.是不是一个父类写了一个virtual 函数,如果子类覆盖它 ... -
8皇后问题c++的递归实现
2012-08-16 16:18 1459最近用C++递归形式实现了8皇后问题,可能效率有点低 #i ... -
mfc 常用控件使用方法及常见数据类型转换
2012-04-18 20:31 2023最近做了几个mfc小程序,想把我们经常用到而又经常忘记的的小知 ...
相关推荐
简单的堆排序算法:以定长数组为例,动态数组等可以以此类推
C++实现常用排序算法,包括冒泡、选择、插入、归并、快排和堆排。代码完整可运行。
Verilog/C++实现排序算法:Verilog/C++实现排序算法:冒泡排序、选择排序、并行全比较排序、串行全比较排序。
C++实现各种排序算法
C++实现常用排序算法 (快速,归并,选择,谢尔,堆排序)
该算法用C++语言实现了基数排序算法,已经调试通过,在Linux系统环境中运行结果正常
1、 实现堆排序算法。 2、 理论分析并实验验证堆排序算法的时间复杂度。
快速排序算法c++实现,快速实现插入排序十万个数(调用)。可以改成输入。并附加了程序运行计时,用于测试时间复杂度,可以移除。绝对能用
自己写的用C++实现的快速排序算法,运行通过,可以作为参考。
总结了各种排序算法,并用C++代码实现,并有演示
C++实现希尔、快速、堆排序、归并排序算法,一些中文注释可能成乱码了,但是不影响代码执行。
此排序算法为本人平常学习练习所写,在学习的过程中也是非常希望和大家分享交流
sort sort_使用C++实现的排序算法之HeapSort
sort sort_使用C++实现的排序算法之MergeSort
flutter sort_使用C++实现的排序算法之CycleSort
sort sort_使用C++实现的排序算法之IntroSort
sort sort_使用C++实现的排序算法之BubbleSort
用c++实现的快速排序算法 算法实现的简单易懂
C++数据结构排序算法总结,包含详细可执行代码以及算法讲解!