C++中级第6讲 排序2.pptxVIP

  • 3
  • 0
  • 约5.06千字
  • 约 20页
  • 2024-05-30 发布于广西
  • 举报

学科竞赛编程教研研究院C++NOIPNOIIOI

1PARTONE基本思想?1.插入排序当读入一个元素时,在已经排序好的序列中,搜索它正确的位置,再放入读入的元素。但不该忽略一个重要的问题:在插入这个元素前,应当将它后面的所有元素后移一位,以保证插入位置的原元素不被覆盖。

2、扑克牌--插入排序回忆一下打牌时抓牌的情景,为了方便打牌,抓牌时一般一边抓牌一边按花色和大小插入到恰当的位置,当抓完所有的牌时,手中的牌便是有序的,这排序方法即为插入排序。3、插入排序的过程【问题描述】使用插入排序的方法将数列6,5,3,4,1,2从小到大排序。【样例输出】123456第一步:拿出前2个数进行比较,按照从小到大排列。【过程分析】6556第二步:拿出第3个数与前面2个数进行比较,插入从小到大合适的位置。653356

1PARTONE第三步:拿出第4个数与前面3个数进行比较,插入从小到大合适的位置四步:拿出第5个数与前面4个数进行比较,插入从小到大合适的位置34五步:拿出第6个数与前面5个数进行比较,插入从小到大合适的位置,完成排序。134562123456

1PARTONE【问题描述】输入n个整数,将n个数按从小到大的顺序输出(n=10000)。【样例输入】84938659776132749【样例输出】1327384949657697【问题分析】具体的实现步骤:(1)读入数据存放在a数组中。(2)对数组中从第2个元素,把它和前面已经排好序的元素按照从后往前的顺序进行比较,如果小于前面的元素,则把该元素插入到被比较的元素前面;如果大于则不变。(3)重复前面第二步,依次拿数组中的元素做第2步的运算,直到排序完成,就完成了插入排序。4、插入排序的应用

1PARTONE#includeiostreamusingnamespacestd;constintMAXN=10001;intmain(){ intn,k,i,j; inta[MAXN]; cinn; for(i=0;in;i++)//输入要排序的数列 cina[i]; for(i=1;in;i++){ intkey=a[i]; j=i-1; while(j=0keya[j]){ a[j+1]=a[j]; j--; } a[j+1]=key; } //输出已经排列好顺序的数列 for(i=0;in;i++) couta[i]; return0;}完整代码

1PARTONE1.桶排序点击添加文本点击添加文本点击添加文本基本思想?若干待排序的值在一个明显的有限范围内(整型)时,可设计有限个有序桶,待排序的值装入对应的桶(当然也可以装入若干个值),桶号就是待排序的值,顺序输出各桶的值,将得到有序的序列

1PARTONE2.桶排序的过程【问题描述】10个小朋友按成绩的从大到小排序,成绩是十分制。【样例输入】3517285293【样例输出】9875533221【过程分析】第一步:在该题中由于最大的数字可能是10,所以我们准备11个桶子(数组)。注:桶适用于数据的范围有限的情况下。哎,考的真是惨不忍睹....000000000001234567891011

PARTONE第二步:遍历输入待排序的数组,把数字当做我们准备的桶子(数组)下标,桶子(数组)里对应的位置存的数加1,要是待排序的数字列里有重复的数字,则桶子里的数字重复加1。122020112001234567891011下标定义数组第三步:最后顺序打印我们准备的桶子(数组)的下标,打印的次数按照桶子(数组)里装的数字的大小,例如是1就打印一次1,是2就打印2次2.。得到排完序的数字列。12202011200下标定义数组123456789

文档评论(0)

1亿VIP精品文档

相关文档