资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,排序问题,用冒泡法对数组元素进行升序排序,对,n,个数进行排序的思路是:,如果要对,n,个数据排序,就需要进行,n-1,轮的比较,每次都对相邻两个数进行比较,将较大的数交换到后一个元素中。每一轮的比较都找出未排好的数据中的最大数放在这几个数的后面。,例如,第一轮需要比较,n-1,次,在,n,个数中找出最大数放在数组的最后一个元素中;,第二轮将对剩下的前,n-1,个数进行比较,需要比较,(n-1)-1,次,将前,n-1,个数中的最大者放入数组的倒数第二个元素中;,以此类推,第,n-1,轮需要进行,1,次比较,将剩下的,2,个数中的较大者放入,a1,中,将最小的数放入,a0,中。,当第,n-1,轮比较进行完后,所有的数据都按照升序在数组中排列。,2,用冒泡法对数组元素进行升序排序的算法,例如:,a,数组中有,10,个元素的值如果为:,1 5 9 -2 8 7 3 10 0 4,第一轮,(,比较,9,次,),:,第,1,次:,a0,与,a1,1 5 9 -2 8 7 3 10 0 4,第,2,次:,a1,与,a2,1 5 9 -2 8 7 3 10 0 4,第,3,次:,a2,与,a3,1 5,-2 9,8 7 3 10 0 4,第,4,次:,a3,与,a4,1 5 -2,8 9,7 3 10 0 4,第,5,次:,a4,与,a5,1 5 -2 8,7 9,3 10 0 4,第,6,次:,a5,与,a6,1 5 -2 8 7,3 9,10 0 4,第,7,次:,a6,与,a7,1 5 -2 8 7 3 9 10 0 4,第,8,次:,a7,与,a8,1 5 -2 8 7 3 9,0 10,4,第,9,次:,a8,与,a9,1 5 -2 8 7 3 9 0,4,10,3,用冒泡法对数组元素进行升序排序的算法,第一轮后,a,数组中有,10,个元素的值为:,1 5 -2 8 7 3 9 0 4,10,第二轮,(,比较,8,次,),:,第,1,次:,a0,与,a1,1 5 -2 8 7 3 9 0 4,10,第,2,次:,a1,与,a2,1,-2 5,8 7 3 9 0 4,10,第,3,次:,a2,与,a3,1 -2 5 8 7 3 9 0 4,10,第,4,次:,a3,与,a4,1 -2 5,7 8,3 9 0 4,10,第,5,次:,a4,与,a5,1 -2 5 7,3 8,9 0 4,10,第,6,次:,a5,与,a6,1 -2 5 7 3 8 9 0 4,10,第,7,次:,a6,与,a7,1 -2 5 7 3 8,0 9,4,10,第,8,次:,a7,与,a8,1 -2 5 7 3 8 0,4,9,10,4,用冒泡法对数组元素进行升序排序的算法,第二轮后,a,数组中有,10,个元素的值为:,1 -2 5 7 3 8 0 4,9,10,第三轮,(,比较,7,次,),:,第,1,次:,a0,与,a1,-2 1,5 7 3 8 0 4,9,10,第,2,次:,a1,与,a2,-2 1 5 7 3 8 0 4,9,10,第,3,次:,a2,与,a3,-2 1 5 7 3 8 0 4,9,10,第,4,次:,a3,与,a4,-2 1 5,3 7,8 0 4,9,10,第,5,次:,a4,与,a5,-2 1 5 3 7 8 0 4,9,10,第,6,次:,a5,与,a6,-2 1 5 3 7,0 8,4,9,10,第,7,次:,a6,与,a7,-2 1 5 3 7 0,4,8,9,10,5,用冒泡法对数组元素进行升序排序的算法,第三轮后,a,数组中有,10,个元素的值为:,-2 1 5 3 7 0 4,8,9,10,第四轮,(,比较,6,次,),:,第,1,次:,a0,与,a1,-2 1 5 3 7 0 4,8,9,10,第,2,次:,a1,与,a2,-2 1 5 3 7 0 4,8,9,10,第,3,次:,a2,与,a3,-2 1,3 5,7 0 4,8,9,10,第,4,次:,a3,与,a4,-2 1 3 5 7 0 4,8,9,10,第,5,次:,a4,与,a5,-2 1 3 5,0 7,4,8,9,10,第,6,次:,a5,与,a6,-2 1 3 5 0,4,7,8,9,10,6,用冒泡法对数组元素进行升序排序的算法,第四轮后,a,数组中有,10,个元素的值为:,-2 1 3 5 0 4,7,8,9,10,第五轮,(,比较,5,次,),:,第,1,次:,a0,与,a1,-2 1 3 5 0 4,7,8,9,10,第,2,次:,a1,与,a2,-2 1 3 5 0 4,7,8,9,10,第,3,次:,a2,与,a3,-2 1 3 5,0 4,7,8,9,10,第,4,次:,a3,与,a4,-2 1 3,0,5,4,7,8,9,10,第,5,次:,a4,与,a5,-2 1 3 0,4,5,7,8,9,10,7,用冒泡法对数组元素进行升序排序的算法,第五轮后,a,数组中有,10,个元素的值为:,-2 1 3 0 4,5,7,8,9,10,第六轮,(,比较,4,次,),:,第,1,次:,a0,与,a1,-2 1 3 0 4,5,7,8,9,10,第,2,次:,a1,与,a2,-2 1 3 0 4,5,7,8,9,10,第,3,次:,a2,与,a3,-2 1,0 3,4,5,7,8,9,10,第,4,次:,a3,与,a4,-2 1 0 3,4,5,7,8,9,10,8,用冒泡法对数组元素进行升序排序的算法,第六轮后,a,数组中有,10,个元素的值为:,-2 1 0 3,4,5,7,8,9,10,第七轮,(,比较,3,次,),:,第,1,次:,a0,与,a1,-2 1 0 3,4,5,7,8,9,10,第,2,次:,a1,与,a2,-2,0 1,3,4,5,7,8,9,10,第,3,次:,a2,与,a3,-2 0 1,3,4,5,7,8,9,10,9,用冒泡法对数组元素进行升序排序的算法,第七轮后,a,数组中有,10,个元素的值为:,-2 0 1,3 4,5,7,8,9,10,第八轮,(,比较,2,次,),:,第,1,次:,a0,与,a1,-2 0 1,3 4,5,7,8,9,10,第,2,次:,a1,与,a2,-2 0,1,3 4,5,7,8,9,10,10,用冒泡法对数组元素进行升序排序的算法,第八轮后,a,数组中有,10,个元素的值为:,-2 0,1,3 4,5,7,8,9,10,第九轮,(,比较,1,次,),:,第,1,次:,a0,与,a1,-2,0 1,3 4,5,7,8,9,10,11,用冒泡法对数组元素进行升序排序的算法程序,main(),int,a10;,int,i,j,t,n,=10;,printf(“Input,10 numbers:n);,for(i,=0;i,n;i,+),scanf(%d,&ai,);,printf(n,);,for(i=0,;in-1;i+),for(j=0,;,jaj+1),t=,aj,;,aj,=aj+1;aj+1=t;,printf(the,sorted numbers:n);,for(i,=0;i,n;i,+),printf(%d,ai);,为数组元素赋值,外,循环控制比较轮数,内循环控制每轮比较次数,相邻两个元素进行比较,如果后一个元素比前,一个元素小,二者交换,输出排序后的数组,12,用选择法对数组元素进行升序排序,选择法对,n,个数进行排序的思路是:,如果要对,n,个数据排序,就需要进行,n-1,轮的比较,每次都从数组中未排好的子序列中找出一个最小数,与子序列最前面的一个元素交换,使小数放在子序列的最前面。,例如,第一轮需要比较,n-1,次,在,n,个数中找出最小数与数组中的第一个元素(即,a0,),交换,使数组中的最小数放在数组的最前面;,第二轮将对剩下的,n-1,个数进行比较,需要比较,(n-1)-1,次,将,n-1,个数中的最小的数与子序列最前面的元素交换,也就数组中的第二个元素(即,a1,),交换,使子序列中的最小数放在子序列的最前面;,以此类推,第,n-1,轮需要进行,1,次比较,将剩下的,2,个数中的小数与子序列的前面即,an-2,交换,使子序列中的最小数子序列中的前面。,当第,n-1,轮比较进行完后,所有的数据都按照升序在数组中排列。,13,用选择法对数组元素进行升序排序的算法,例如:,a,数组中有,10,个元素的值如果为:,1 5 9 -2 8 7 3 10 0 4,第一轮,(,比较,9,次,),:,第,1,次:,a0,与,a1,1 5 9 -2 8 7 3 10 0 4,第,2,次:,a0,与,a2,1 5 9 -2 8 7 3 10 0 4,第,3,次:,a0,与,a3,-2,5 9,1,8 7 3 10 0 4,第,4,次:,a0,与,a4,-2 5 9 1,8 7 3 10 0 4,第,5,次:,a0,与,a5,-2 5 9 1 8,7 3 10 0 4,第,6,次:,a0,与,a6,-2 5 9 1 8 7,3 10 0 4,第,7,次:,a0,与,a7,-2 5 9 1 8 7 3 10 0 4,第,8,次:,a0,与,a8,-2 5 9 1 8 7 3 10,0 4,第,9,次:,a0,与,a9,-2,5 9 1 8 7 3 10 0 4,14,用选择法对数组元素进行升序排序的算法,第一轮后,a,数组中有,10,个元素的值为:,-2,5 9 1 8 7 3 10 0 4,第二轮,(,比较,8,次,),:,第,1,次:,a1,与,a2,-2,5 9 1 8 7 3 10 0 4,第,2,次:,a1,与,a3,-2,1,9,5,8 7 3 10 0 4,第,3,次:,a1,与,a4,-2,1 9 5 8 7 3 10 0 4,第,4,次:,a1,与,a5,-2,1 9 5 8 7 3 10 0 4,第,5,次:,a1,与,a6,-2,1 9 5 8 7 3 10 0 4,第,6,次:,a1,与,a7,-2,1 9 5 8 7 3 10 0 4,第,7,次:,a1,与,a8,-2,0,9 5 8 7 3 10,1,4,第,8,次:,a1,与,a9,-2,0,9 5 8 7 3 10 1 4,15,用选择法对数组元素进行升序排序的算法,第二轮后,a,数组中有,10,个元素的值为:,-2,0,9 5 8 7 3 10 1 4,第三轮,(,比较,7,次,),:,第,1,次:,a2,与,a3,-2,0,5 9,8 7 3 10 1 4,第,2,次:,a2,与,a4,-2,0,5 9 8 7 3 10 1 4,第,3,次:,a2,与,a5,-2,0,5 9 8 7 3 10 1 4,第,4,次:,a2,与,a6,-2,0,3,9 8 7,5,10 1 4,第,5,次:,a2,与,a7,-2,0,3 9 8 7 5 10 1 4,第,6,次:,a2,与,a8,-2,0,1,9 8 7 5 10,3,4,第,7,次:,a2,与,a9,-2,0,1,9 8 7 5 10 3 4,16,用选择法对数组元素进行升序排序的算法,第三轮后,a,数组中有,10,个元素的值为:,-2,0,1,9 8 7 5 10 3 4,第四轮,(,比较,6,次,),:,第,1,次:,a3,与,a4,-2,0,1,8 9,7 5 10 3 4,第,2,次:,a3,与,a5,-2,0,1,7,9,8,5 10,3 4,第,3,次:,a3,与,a6,-2,0,1,5,9 8,7,10 3 4,第,4,次:,a3,与,a7,-2,0,1,5 9 8 7 10 3 4,第,5,次:,a3,与,a8,-2,0,1,3,9 8 7 10,5,4,第,6,次:,a3,与,a9,-2,0,1,3,9 8 7 10 5 4,17,用选择法对数组元素进行升序排序的算法,第四轮后,a,数组中有,10,个元素的值为:,
展开阅读全文