【项目3 - 体验复杂度之二 复杂度为O(nlogn) 的快速排序quicksort】
来源:互联网 发布:不是淘宝卖家能贷款吗 编辑:程序博客网 时间:2024/05/20 13:39
上篇文章我们看到一般的选择排序复杂度为n^2,速度是相当慢的,这样的速度在如今飞速发展的新时代是不能被接受的,所以这篇文章中我采用了快速排序的方法,复杂度为n*logn,运行时间有了很大改变哦!
#include <stdio.h>#include <time.h>#include <stdlib.h>#define MAXNUM 100000void quicksort(int data[],int first,int last){ int i, j, t, base; if (first>last) return; base=data[first]; i=first; j=last; while(i!=j) { while(data[j]>=base && i<j) j--; while(data[i]<=base && i<j) i++; /*交换两个数*/ if(i<j) { t=data[i]; data[i]=data[j]; data[j]=t; } } data[first]=data[i]; data[i]=base; quicksort(data,first,i-1); quicksort(data,i+1,last); }int main(){ int x[MAXNUM]; int n = 0; double t1,t2; FILE *fp; fp = fopen("numbers.txt", "r"); while(fscanf(fp, "%d", &x[n])!=EOF) n++; printf("数据量:%d, 开始排序....", n); t1=time(0); quicksort(x, 0, n-1); t2=time(0); printf("用时 %d 秒!", (int)(t2-t1)); fclose(fp); return 0;}
大家看到这样快速排序的运算时间都可以忽略不计了,我们知道,这就是我们想要的!
0 0
- 【项目3 - 体验复杂度之二 复杂度为O(nlogn) 的快速排序quicksort】
- 项目3的程序2——复杂度为O(nlogn)的快速排序程序
- 【项目3 - 体验复杂度之一 复杂度为O(n 2 )的选择排序selectsort】
- 关于快速排序和插入排序最坏时间复杂度为O(nlogn)的算法
- 快速排序[平均时间复杂度O(NlogN)]
- 关于O(nlogn)复杂度的体验
- 堆排序复杂度为O(nlogn),需要注意的误区
- Java-时间复杂度为O(nlogn)的排序算法(快速排序, 归并排序, 堆排序, 希尔排序)
- leetcode之时间复杂度为O(nlogn)的链表排序
- 第2周项目3-体验复杂度(1) O(n 2 )和O(nlogn)
- 快速排序算法的时间复杂度为什么是O(NlogN),还有O(N^2)
- 改进版快速排序(平均复杂度O(NlogN))
- 二、排序(时间复杂度 O(nlogn))
- 对链表排序 要求时间 复杂度为 O(nlogn) 空间复杂度为常量
- 实现时间复杂度为O(nlogn)的链表排序算法
- 排序的最低时间复杂度为什么是O(nlogn)
- 单链表的归并排序:时间复杂度O(nlogn),空间复杂度O(1)
- O(nlogn)时间复杂度 链表排序
- typedef与#define的区别t
- GPU和python
- 个人网站支付功能实现分享
- 程序的多文件组织
- hdu 3591 The trouble of Xiaoqian(多重背包)
- 【项目3 - 体验复杂度之二 复杂度为O(nlogn) 的快速排序quicksort】
- 关于Go
- Android connect函数hook
- A Word Can Make You Miss Your Deadline
- JAVA IO流RandomAccessFile随机读取
- Xamarin.Android使用教程之简介和安装
- 第二周 项目1 c/c++语言中函数参数传递的三种方式
- C# 执行存储过程
- Androidz之clickable