数据结构
PaulGeLi
这个作者很懒,什么都没留下…
展开
-
选择排序跟冒泡排序的比较
/*时间复杂度 选择排序:比较次数O(n^2)总的比较次数N=(n-1)+(n-2)+…+1=n*(n-1)/2。交换次数O(n),最好情况是,已经有序,交换0次;最坏情况交换n-1次,逆序交换n/2次。交换次数比冒泡排序少多了,由于交需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。冒泡排序:若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数为n-1,交换原创 2015-06-29 11:26:19 · 1568 阅读 · 0 评论 -
单链表的基本操作
单链表的基本操作,在Dev-c++下编译成功#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <stdbool.h>typedef struct Node{ int data; struct Node* next;}Node, *LinkList; //Node等价于Struct Node,Li原创 2015-06-28 23:16:04 · 304 阅读 · 0 评论 -
快速排序
选择一个基准元素,通常选择第一个元素,过一轮排序将数据分为两部分,左边小于基准右边大于基准元素,然后分别对这两部分记录用递归的方法继续进行排序,直到整个序列有序。 1.第一趟排序 2.排序全过程 排序实现过程#include <stdio.h>#include <stdlib.h>#define SIZE 10void swap(int arr[], int a, int b){原创 2015-07-02 17:42:35 · 253 阅读 · 0 评论 -
插入排序和希尔排序
1.插入排序算法,假设第i个元素之前的顺序已经排好了,比较第i个位置元素 和前一个元素的大小,如果小于前一个则把前一个元素后移。k指向元素后 移后的空位。 源代码:#include <stdio.h>#define size 7void InsertSort(int arr[], int length){ int i, j, k, temp; for(i = 1; i <原创 2015-07-03 00:45:35 · 270 阅读 · 0 评论 -
归并排序
归并排序是将两个有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了。这样通过先递归的分解数列,再合并数列就完成了归并排序。如图所示 比较2个数列的第一个数,谁小就先取谁,然后接着进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。#include <stdio.h>void原创 2015-07-04 19:42:29 · 241 阅读 · 0 评论