在有些情况下在第i(<n-1)趟时已排好序了但仍执行后面 ∥几趟的比较。实际上一旦算法中某一趟比较时不出现记录交换, 说明已排好序了,就可以结束本算法。为此改进冒泡排序算法如 void BubbleSort(RecType ri, int n) t int i,j, exchange; RecType temp; for(i=0;<n-1;i++) exchange=0 for(j=n-1ij>ij-)/比较找出最小关键字的记录* if (RIil. key<rIij-1 key) i temp=R[l; rl=r[ Rj-1=temp; exchange=l if( exchange=0) return;/中途结束算法*
在有些情况下,在第i(i<n-1)趟时已排好序了,但仍执行后面 几趟的比较。实际上,一旦算法中某一趟比较时不出现记录交换, 说明已排好序了,就可以结束本算法。为此,改进冒泡排序算法如 下: void BubbleSort(RecType R[],int n) { int i,j,exchange;RecType temp; for (i=0;i<n-1;i++) { exchange=0; for (j=n-1;j>i;j--) /*比较,找出最小关键字的记录*/ if (R[j].key<R[j-1].key) { temp=R[j]; R[j]=R[j-1];R[j-1]=temp; exchange=1; } if (exchange==0) return; /*中途结束算法*/ } }
111.3.2快速排序 快速排序是由冒泡排序改进而得的它的基本思想是:在待排 序的n个记录中任取一个记录(通常取第一个记录)把该记录放 入适当位置后数据序列被此记录划分成两部分。所有关键字 比该记录关键字小的记录放置在前一部分所有比它大的记录 放置在后一部分并把该记录排在这两部分的中间(称为该记录 归位)这个过程称作一趟快速排序。之后对所有的两部分分别 重复上述过程直至每部分内只有一个记录为止。简而言之每 趟使表的第一个元素放入适当位置将表一分为二对子表按递 归方式继续这种划分直至划分的子表长为1
11.3.2 快速排序 快速排序是由冒泡排序改进而得的,它的基本思想是:在待排 序的n个记录中任取一个记录(通常取第一个记录),把该记录放 入适当位置后,数据序列被此记录划分成两部分。所有关键字 比该记录关键字小的记录放置在前一部分,所有比它大的记录 放置在后一部分,并把该记录排在这两部分的中间(称为该记录 归位),这个过程称作一趟快速排序。之后对所有的两部分分别 重复上述过程,直至每部分内只有一个记录为止。简而言之,每 趟使表的第一个元素放入适当位置,将表一分为二,对子表按递 归方式继续这种划分,直至划分的子表长为1