選擇排序法 通訊一甲 B09622048 楊穎穆.

Slides:



Advertisements
Similar presentations
1 债券融资业务拓展交流 债券业务部 二 O 一二年二月. 2 目 录  第一部分 债券融资业务概述  第二部分 东兴证券债券融资业务情况介绍及前景展望  第三部分 什么样的企业适合发债  第四部分 债券融资业务合作开发方式及激励探讨.
Advertisements

轴对称(一) 课堂引入 仔细观察下列图片,思考这些图片有什么样 的特点.
While 迴圈 - 不知重複執行次數
《C语言程序设计》复习
期末書面報告指定書籍 王鼎鈞回憶錄---昨天的雲
川信-丰盛系列集合资金信托计划 2016年3月.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
“八皇后”问题 崔萌萌 吕金华.
情緒與壓力管理─背部舒緩 指導老師:彭易璟 第六組組員:會資三乙 499A0047 謝宛霖 會資三乙 499A0019 吳汶諭
指導老師:楊淑娥 組別:第一組 成員:劉怡萱4a0i0066 吳珮瑜4a0i0070 林秋如4a0i0075 陳婉婷4a0i0076
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
C语言基础——指针的高级应用 Week 05.
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
C语言程序设计 第十二章 位运算.
第5章 函数与模块化设计 学习目的与要求: 掌握函数的定义及调用方法 理解并掌握参数的传递方法 理解函数的嵌套与递归调用
第六章 数 组 主讲教师 贾月乐 联系电话:
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
C 程序设计实例 1. 问题描述 2. 数据结构 3. 算法分析 4. 参考程序 5. 改进说明.
Do.For.While.正三角.倒正三角.倒九九乘法表
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
排序 Sorting.
项目六 用指针优化学生成绩排名 项目要求 项目分析
If … else 選擇結構 P27.
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
程式撰寫流程.
C语言程序设计 李祥.
第2章 线性表 线性表抽象数据类型 顺序表 主要知识点 单链表 循环单链表 循环双向链表 静态链表 设计举例.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
第3章 堆栈和队列 堆栈 堆栈应用 队列 队列应用 优先级队列 主要知识点.
C语言 程序设计基础与试验 刘新国、2012年秋.
多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
資料結構與C++程式設計進階 排序與搜尋 講師:林業峻 CSIE, NTU 6/ 14, 2010.
C语言复习2----函数.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
Introduction to the C Programming Language
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
輸出與輸入(I/O).
程式設計-- Binary Search 通訊一甲 B 楊穎穆.
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
累堆排序法 (Heap Sort).
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C程序设计.
Introduction to the C Programming Language
第七章  数 组.
程式設計--linear search 通訊一甲 B 楊穎穆.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
Chap 7 数 组 7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Introduction to the C Programming Language
函式庫補充資料 1.
隨機函數.
Presentation transcript:

選擇排序法 通訊一甲 B09622048 楊穎穆

目錄 1.摘要 2.排序原理 3.程式 4.Big-o說明 5.實驗結果顯示 6.參考資料

摘要 ※使用程式設計對一串若干未排序的數值加以排序(選擇排序法): 1. 輸入一串未排序數值(至少十個數值),分別存到陣列中 2. 印出該未排序前陣列中之位址與數值 3. 使用選擇排序法完成排序工作, 說明它的效率,即說明其Big-O為何? 4. 排序後印出該排序陣列中之位址與數值

排序原理 ※這次主要使用的是”選擇排序法”,它是個可用來排序小數目元素的有效率演算法,就是將一串未排好的數字,找出它其中最小的數排至最左邊,也就是把最小元素放置A[0]的位置,然後接著在n-1個元素中,找最小的排在A[1],直到排序好為止。

排序原理 5 4 6 2 ※設計一個由小到大的排序 ※我們先設定好一串數字,假如是”5,4,6,2”分別 A[0] A[1] A[2] A[3] ※設定好A[0]為’最小索引值’,然後與A[1]做比較,如果A[1]<A[0]此時A[1]就是我們新的索引值,接著A[1]再和A[2]做比較得到A[2]>A[1]這時索引值還是為A[1],然後A[1]在和A[3]做比較,A[3]<A[1]時,現在索引值就是A[3],就是我們也找的最小索引值。最後程式會將A[3]存於我們設定好的temp裡,進行和A[0]做交換,依此類推,接著找尋最小第二索引值,直到排序好為止,就會得到我們想要的結果”2,4,5,6” 。 5 4 6 2

程式 #include <stdio.h> #include <stdlib.h> #define n 12 //限制我有12筆資料 void Sort( int A[],int t); //宣告有一個副程式 int main(void){ int t,A[n]; //宣告有變數 t 和 A 陣列 for(t=0;t<n;t++){ //for迴圈 printf(" 請輸入任意數字[%d]:",t); //在畫面中提示我們輸入的數且印出來 scanf("%d",& A[t]); //輸入數字且屬於A陣列 } Sort(A,n); //呼叫副程式,並執行副程式做排序動作 for(t=0;t<n;t++){ //for迴圈 printf("\n由小到大排序後的數字[%d]: ",t); //印出排序好的位址和數字 printf("%d \n",A[t]); //印出排序後的數字從A[0]到A[11] system("PAUSE"); return 0;

void Sort( int A[],int t) { //副程式開始 int i,j,temp,sel; //宣告有變數 i,j,temp,sel for(i=0;i<n-1;i++){ //for迴圈 sel=i; //目前最小元素的索引 for(j=i+1;j<n;j++){ //for迴圈 if(A[j]<A[sel]){ sel=j; //更換目前最小元素的索引 } if(i!=sel){ //A[i]和A[sel]互換 temp=A[i]; A[i]=A[sel]; A[sel]=temp;

Big-o說明 ※Big-o主要就是說明整個排序時間的複雜效率,在我們程式中,已經先設定好我們要輸入的數字為n個,然後它會執行的迴圈總共是n-1次,第n-1次是要做一次比對,然後n-2….依此類推,最後我們得到時間複雜度的結果是n的平方。

實驗結果顯示

參考資料 ※主要的參考資料來至”演算法概論”這本書及王志湖老師上課所教授的內容和同學的程式。

END