2013年9月11日

const指针与指向const的指针

摘要: 当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。听起来有点混淆一会放个例子上来就明白了。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 constint* p; (推荐)intconst* p; 第一种可以理解为,p是一个指针,它指向的内容是constint类型。p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的。 第二种很容易被理解成是p是一个指向int的const指针(指针本身不能被修改),但这样理解是错误的,它也是表示的是指向const的指针(指针指向的内容是不能被修 阅读全文

posted @ 2013-09-11 21:40 CnZyy 阅读(286) 评论(0) 推荐(0) 编辑

各种排序总结(总)

摘要: 排序法平均时间最差情形稳定度额外空间备注冒泡O(n2) O(n2)稳定O(1)n小时较好交换O(n2) O(n2)不稳定O(1)n小时较好选择O(n2)O(n2)不稳定O(1)n小时较好插入O(n2)O(n2)稳定O(1)大部分已排序时较好基数O(logRB)O(logRB)稳定O(n)B是真数(0-9),R是基数(个十百)ShellO(nlogn)O(ns) 1<s<2不稳定O(1)s是所选分组快速O(nlogn)O(n2)不稳定O(nlogn)n大时较好归并O(nlogn)O(nlogn)稳定O(n)n大时较好堆O(nlogn)O(nlogn)不稳定O(1)n大时较好若n较小: 阅读全文

posted @ 2013-09-11 15:44 CnZyy 阅读(272) 评论(0) 推荐(0) 编辑

各种排序总结(七)基数排序

摘要: 例如待排序数组[62,14,59,88,16]简单点五个数字分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样| 0 | 0 | 62 | 0 | 14 | 0 | 16 | 0 | 88 | 59 || 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |桶编号将桶里的数字顺序取出来,输出结果:[62,14,16,88,59]再次入桶,不过这次以十位数的数字为准,进入相应的桶,变成下边这样:由于前边做了个位数的排序,所以当十位数相等时,个位数字是由小到大的顺序入桶的,就是说,入完桶还是有序| 0 | 14,16 | 0 | 0 | 0 | 59 阅读全文

posted @ 2013-09-11 15:43 CnZyy 阅读(215) 评论(0) 推荐(0) 编辑

各种排序总结(六)归并排序

摘要: 1 /**************** 2 思路:假设待排序有n个记录,将这n个记录看成n个有序的子序列,每个子序列长度为1, 3 然后两两归并。 4 如何将将二个有序数列合并:这个非常简单,只要从比较二个数列的第一个数, 5 谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空, 6 那直接将另一个数列的数据依次取出即可。 7 ****************/ 8 #include 9 10 using namespace std;11 12 //将有二个有序数列arr[first...mid]和arr[mid...last]合并。主要是merge这个函数13 .. 阅读全文

posted @ 2013-09-11 15:42 CnZyy 阅读(254) 评论(0) 推荐(0) 编辑

各种排序总结(五)快速排序

摘要: 1 /********************* 2 快排思想: 3 1.i =L; j = R; 选取第一个数为基准数,将基准数挖出形成第一个坑a[0]。 4 2. j—从后向前找到比基准数小的,找到后将此数挖出填入前一个坑中a[i],形成新的坑a[j] 5 3. i++从前向后找到比基准数大的,找到后将此数挖出填入前一个坑中a[j] 6 4. 重复执行2、3步直到i==j,将基准数填入即可 7 ***********************/ 8 #include 9 10 using namespace std;11 12 int Partition(int * arr, int l.. 阅读全文

posted @ 2013-09-11 15:41 CnZyy 阅读(252) 评论(0) 推荐(0) 编辑

各种排序总结(四)冒泡排序

摘要: 思想:一共n-2次外循环,每次循环将最大的数放到未排序的数列的最后。#include using namespace std;void BubbleSort(int* arr, int n){ bool Swap; int i,j; for(i=0; i arr[j+1]) //较大的放到后面 { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; Swap = true; ... 阅读全文

posted @ 2013-09-11 15:39 CnZyy 阅读(187) 评论(0) 推荐(0) 编辑

各种排序总结(三)堆排序

摘要: 不稳定。时间复杂度:建堆时间代价O(n),每次删除堆顶重新建堆O(logn), 所以总时间:O(n)+O(nlogn)=O(nlogn)。最好、最差、平均都是O(nlogn)。空间复杂度:用到一个临时变量,O(1)。总结:由于时间复杂度O(nlogn)较小,因此适用于数组n较大的情况。 阅读全文

posted @ 2013-09-11 15:36 CnZyy 阅读(139) 评论(0) 推荐(0) 编辑

各种排序总结(二)直接选择排序

摘要: /***************思路:外层循环:从0到n-1遍历数组。 对于第i个元素,内层循环:从i+1开始遍历数组找到最小的元素,与i交换。****************/#include using namespace std;void SelectSort(int* arr, int n){ int i,j,temp,min_index; for(i=0; i >n; arr = new int[n]; cout>arr[i]; } SelectSort(arr,n); cout<<"The outcome:"<<endl; . 阅读全文

posted @ 2013-09-11 15:19 CnZyy 阅读(269) 评论(0) 推荐(0) 编辑

各种排序总结(一)直接插入排序

摘要: 思想:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。从i=1开始往后遍历,对于每个数据记录为temp,从该数据向前探索若比temp大则后移,直至第一个比temp小的数据,将temp插入到这个数据之后。 1 #include 2 3 using namespace std; 4 5 void InsertSort(int* arr,int n) 6 { 7 int i,j,temp; 8 for(i=1;i=0 && temp >n;27 arr = new int[n];28 cout>arr[i];32 ... 阅读全文

posted @ 2013-09-11 15:17 CnZyy 阅读(404) 评论(0) 推荐(0) 编辑

导航