数据结构
fqz_hacker
这个作者很懒,什么都没留下…
展开
-
排序算法-冒泡排序
首先,衡量排序算法的重要一点是排序算法的稳定性:即如果两个元素a1 == a2,且排序前a1与a2之间的位置与排序后没有变化,则称此排序算法是稳定的。 其次,排序算法的性能评估主要看元素间的比较次数。 swap函数 void swap(int &a,int &b) { int temp; temp = a; a = b; b =temp; } 冒泡排序-带判断位的冒泡排序原创 2013-03-26 14:05:36 · 419 阅读 · 0 评论 -
排序算法-快速排序
(1)思想:又称作分区排序。其基本思想为,任取待排序元素中的一个(例如第一个)作为基准,按照该元素的大小,将整个元素序列分为左右两个序列,左侧序列中的元素都小于基准元素,右侧序列中的元素都大于等于基准元素,基准元素排列在中间。然后,分别对左右两个序列重复实行此方法,直到所有元素都在排列位置上为止。 (2)c++实现: void quickSort(int a[],int start,int e原创 2013-03-26 15:59:36 · 424 阅读 · 0 评论 -
排序算法-选择排序
(1)思想:第i(i=0,i=1,...,i=n-2)次遍历,从后面n-i(包含第i个)个元素中选择最小的元素与第i个元素交换。 (2)c++实现: void selectSort(int a[],int n){ for(int i=0;i<n-1;i++){ int k = i; for(int j = i+1;j<n;j++){ if(a[j] < a[i]) k原创 2013-03-26 14:54:32 · 426 阅读 · 0 评论 -
排序算法-插入排序
(1)思想:每步将一个待排序的元素按其大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。 (2)c++实现: void insertSort(int a[],int n){//插入排序,对a[1...n],a[1..k-1]是已经拍好序的,a[k+1..n]是无序的;将a[k]插入到a[1..k-1]即可 for(int i=1;i<n;i++){ int cur原创 2013-03-26 14:31:33 · 478 阅读 · 0 评论 -
考虑全面的链表插入 - c++
(一)不带头节点的单向链表: 链表插入: struct node{ int data; node *next; }; bool insertLinkList(node **head,int pos,int value){//向头指针为head的链表中pos位置处插入值为value的节点 if(pos < 0)//位置判定原创 2013-06-19 10:13:16 · 587 阅读 · 0 评论 -
带头节点的单链表删除 - c++
struct node{ int data; node *next; }; bool eraseLLHeadnode(node *head,int pos){ if(pos < 0) return false; node *p = head; int j = 0; while原创 2013-06-19 14:32:22 · 846 阅读 · 0 评论