C qsort.

Slides:



Advertisements
Similar presentations
C语言程序设计 主讲教师 :张群燕 电话:
Advertisements

电子成绩单项目实现.
“八皇后”问题 崔萌萌 吕金华.
第一章 C语言概述 计算机公共教学部.
補充: Input from a text file
第4章 串 串的基本概念和C语言的串函数 串的存储结构 动态数组实现的顺序串 串的模式匹配算法——BF算法 主要知识点.
C语言程序设计 第十二章 位运算.
函數 授課:ANT 日期:2009/3/24.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
101北一女中 資訊選手培訓營 快速排序函式qsort() Nan.
排序 Sorting.
快速排序法 (Quick Sort).
C 程式設計— 指標.
函數 授課:ANT 日期:2011/3/28.
If … else 選擇結構 P27.
程序讲解 第一题: 将指定文件的m行到n行字符写到显示屏上,m和n值从键盘输入。 运行时输入及结果: please enter m,n:
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C語言簡介 日期 : 2018/12/2.
程序设计期末复习 黎金宁
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
Chapter 7 指標.
第2章 线性表 线性表抽象数据类型 顺序表 主要知识点 单链表 循环单链表 循环双向链表 静态链表 设计举例.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第7章 编译预处理 本章要求: 本章重点: 本章难点: 掌握用#define定义无参数宏和带有参数宏定义和调用方法;
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
6.4.1指针与二维数组 1、二维数组结构的分析 设有数组定义为:int a[3][4]; 则有: a表示数组在内存中的首地址。
多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
計數式重複敘述 for 迴圈 P
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
程式設計實習課(四) ----C 函數運用----
数组 梁春燕 华电信息管理教研室.
Struct結構 迴圈
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
自我參考結構 (self-reference – 1)
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
C语言复习3----指针.
C语言复习2----函数.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C语言程序示例: 1.输入10个数,按从小到大的顺序排序。 2.汉诺塔问题。.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
函式庫補充資料.
习题课
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
习题课 编译原理与技术 计算机科学与技术学院 李诚.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 类型、对象、运算符和表达式.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第 9 章 建構函式與解構函式.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
第七章  数 组.
結構、檔案處理(Structure, File)
第十二章 位运算.
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Introduction to the C Programming Language
函式庫補充資料 1.
隨機函數.
Presentation transcript:

C qsort

C qsort 原形 void qsort(void* base, size_t n, size_t size int (*cmp) (const void*, const void*) ) 用法 # include string.h 功能 快速排序

C qsort 說明 陣列基礎的快速排序法函數,陣列是參數 base,n 是陣列大小,size 是每個元素的大小,最後的參數是指向函數的指標,這是比較元素大小的函數。

1. 對int類型數組排序 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num, 100, sizeof(num[0]), cmp);

2.對char類型數組排序 char word[100]; Sample: int cmp( const void *a , const void *b ) { return *(char *)a - *(int *)b; } qsort(word,100,sizeof(word[0]),cmp);

3.對double類型數組排序 double in[100]; int cmp( const void *a , const void *b ) { return *(double *)a >= *(double *)b ? 1 : -1; } qsort(in, 100, sizeof(in[0]), cmp);

4.對struct結構體一級排序 struct In { double data; int other; } s[100] int cmp( const void *a ,const void *b) { return ((struct In *)a)->data>((struct In *)b)->data ? 1 : -1; } qsort(s,100,sizeof(s[0]),cmp);

5.對struct結構體二級排序 struct In {int x;int y;} s[100]; //按照x從小到大排序,當x相等時按照y從大到小排序 int cmp( const void *a , const void *b ) { struct In *c = (In *)a; struct In *d = (In *)b; if(c->x != d->x) return c->x - d->x; else return d->y - c->y; } qsort(s,100,sizeof(s[0]),cmp);

6.對結構字符串進行排序 struct In {int data;char str[100];} s[100]; //按照結構體中字符串str的字典順序排序 int cmp ( const void *a , const void *b ) { return strcmp( ((struct In *)a)->str, ((struct In *)b)->str); } qsort(s,100,sizeof(s[0]),cmp);

7.對字符串進行排序 呼叫 qsort( (void*) array, Num, sizeof(char *), compareString ); 定義 int compareString(const void *a, const void *b) { return strcmp(*(char **)a, *(char **)b); }

7.對字符串進行排序 像以下這種就可以用上面的compare函式來處理 array[0] = "12345678" array[1] = "111111111" #include <stdio.h> #include <string.h> #include <stdlib.h> int cmpr(const void *a, const void *b); char s[1000]; char *s_pointer[1000]; int i=0,j=0;

7.對字符串進行排序 int main() { while((fgets(s,1000,stdin))!=NULL) if(i<10) s_pointer[i++]=strdup(s); else break; qsort(s_pointer, i, sizeof(char *), cmpr); while(j<i) printf("%s\n",s_pointer[j++]); system("pause"); return 0; }

7.對字符串進行排序 int cmpr(const void *a, const void *b) { return strcmp(*(char**)a,*(char**)b); }

Reference http://olia14.pixnet.net/blog/post/13236643