程序设计基础 第8章数组 1/14
程序设计基础 1/14 第 8 章 数 组
本章知识点 8.0数组的概念 81一维数组用“数组名+一维下标”来表示数据 8.2一维数组的应用 8.3二维数组用“数组名+二维下标”来表示数据 8.4数组与函数 数组元素与数组名做函数参数 小结 恩 2/14
8.0 数组的概念 8.1 一维数组 用“数组名+一维下标”来表示数据 8.2 一维数组的应用 8.3 二维数组 用“数组名+二维下标”来表示数据 8.4 数组与函数 数组元素与数组名做函数参数 小结 本章知识点 2/14
【例8.7】选择排序法 ■编写程序,对个数排序按由小到大顺序)。 ■选择法思路:每次选择未排好序的数中最小的放在前面, 个数的排序就是n-1次找最小值的过程。 ■例如:n=58025368350 if(x>y) temp=x;x=y;y=temp;} if(x>z)找三个数的最小值 temp=z;Z=x;x temp;} if(y>z)/找两个数的最小值 temp=y;y z;z=temp;) 三个数排序是找两 个最小值的过程 恩 3/14
【例8.7】选择排序法 ◼编写程序,对n个数排序(按由小到大顺序)。 ◼选择法思路:每次选择未排好序的数中最小的放在前面,n 个数的排序就是n-1次找最小值的过程。 ◼例如:n = 5 80 25 36 83 50 3/14 if (x>y) { temp = x; x = y; y = temp;} if (x>z) //找三个数的最小值 { temp = z; z = x; x = temp;} if (y>z) //找两个数的最小值 { temp = y; y = z; z = temp;} 三个数排序是找两 个最小值的过程
【例8.7】选择排序法 ■编写程序,对个数排序(按由小到大顺序)。 ■选择法思路:每次选择未排好序的数中最小的放在前面,门 个数的排序就是n-1次找最小值的过程。 ■例如:n=58025368350 排序过程: (1)第一趟选择排序,通过n-1次比较交换,从n个数中找出最 小的数,放在第一个元素位置上;2580368350 (2)第二趟选择排序,通过n-2次比较,从剩余的n-1个数中找 出次小的数,放在第二个元素的位置上;2536808350 (3)重复上述过程,共经过-1趟排序后,排序结束。 恩 4/14
排序过程: (1)第一趟选择排序,通过n-1次比较交换,从n个数中找出最 小的数,放在第一个元素位置上;25 80 36 83 50 (2)第二趟选择排序,通过n-2次比较,从剩余的n-1个数中找 出次小的数,放在第二个元素的位置上;25 36 80 83 50 (3) 重复上述过程,共经过n-1趟排序后,排序结束。 【例8.7】选择排序法 ◼编写程序,对n个数排序(按由小到大顺序)。 ◼选择法思路:每次选择未排好序的数中最小的放在前面,n 个数的排序就是n-1次找最小值的过程。 ◼例如:n = 5 80 25 36 83 50 4/14
【例8.7】 选择排序法 n=5初始8025368350 a[o]a[1]a[2]a[3]a[4] a[o]a[1]a[2]a[3]a[4] a0]af1a2☒a3]a4 a[o]a[1]a[2]a[3]a[4] 289 3683 50 25 3680 8350 25 36 8083 50 25365089 25 80 83 50 25 36 80 83 50 2536 5083 89 第四趟1次比较 5 80 36 83 50 25 36 80 83 50 第三趟2次比较 5 80 36 83 50 第二趟3次比较 for (i=0;i<n-1;i++) 第一趟4次比较 for (j=i+1;j<n;j++) ∥第趟选择排序,求最小值过程 for0=i+1;jn;j++)la[存放in-1之间所有数最小值 if (a[i]>a[]) if(a叮>a) t=a[; t=ai]; a叮=al a0=a] a]=t; a]=t; 3 5/14
【例8.7】选择排序法 n=5 初始 80 25 36 83 50 5/14 a[0] a[1] a[2] a[3] a[4] 25 80 36 83 50 25 80 36 83 50 25 80 36 83 50 25 80 36 83 50 a[0] a[1] a[2] a[3] a[4] 25 36 80 83 50 25 36 80 83 50 25 36 80 83 50 a[0] a[1] a[2] a[3] a[4] 25 36 80 83 50 25 36 50 83 80 a[0] a[1] a[2] a[3] a[4] 25 36 50 80 83 第一趟 4次比较 第二趟 3次比较 第三趟 2次比较 第四趟 1次比较 //第i趟选择排序,求最小值过程 for (j=i+1; j<n; j++) //a[i]存放i~n-1之间所有数最小值 { if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } for (i=0; i<n-1; i++) { for (j=i+1; j<n; j++) if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } }