a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

c語言快速排序算法示例代碼分享

2020-01-26 15:35:46
字體:
來源:轉載
供稿:網友


步驟為:
1.從數列中挑出一個元素,稱為 "基準"(pivot);
2.重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作。
3.遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。
遞歸的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞歸下去,但是這個算法總會退出,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最后的位置去。

復制代碼 代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define RANDOM(i) (rand()%i)
#define N 9    //設置數組長度

//分區操作
int Partition(int array[], int left, int right)
{
 int i,j;
 int temp;
 j = left-1;
 for (i=left; i<=right; i++)
 {
  if (array[i] <=  array[right]) //以最后一個數組的值為基準
  {
   j++;
   temp = array[j];
   array[j] = array[i];
   array[i] = temp;
  }
 }
 return j;
}

//迭代運算
void QuikSort(int array[], int left, int right)
{
 int pivot;
 if (left < right)
 {
  pivot = Partition(array, left, right);
  QuikSort(array, left, pivot-1);
  QuikSort(array, pivot+1, right);
 }
}

//示例
int main()
{
 int i = 0;
 int a[N];
 srand((int)time(0));  //設置隨機數種子

 for (i=0; i<N; i++)  //排序前
 {
  a[i] = RANDOM(100);
  printf("%d/t", a[i]);
 }
 printf("/n/n");

 QuikSort(a, 0, N-1);

 for (i=0; i<N; i++) //排序后
 {
  printf("%d/t", a[i]);
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 中文字幕一区二区在线观看 | av毛片在线免费看 | 国产1页 | xxxwww日本| 久久久久久久91 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 秋霞精品 | 日韩中文字幕精品 | 欧美精品一区二 | 日韩久久一区 | 免费日本视频 | 色噜噜精品 | 欧美日韩在线一区 | 欧美色视频在线观看 | 天天看天天操 | 成人一边做一边爽爽视频 | 午夜激情视频免费 | 久草福利视频 | 久操视频免费 | 国产在线视频在线 | 日韩精品久 | 国产精品精品 | 日韩一区欧美一区 | 欧洲精品一区 | 欧美日韩亚洲国产综合 | 在线看欧美 | 天天草天天插 | 久久久久久久 | 国产精品视频在线观看 | 久久精品一区二区三区不卡牛牛 | 国产a免费 | 97久久精品 | 日韩在线观看不卡 | 美女黄频在线 | 欧美日韩中文字幕 | 精品自拍视频 | 国产无套精品久久久久久 | 涩涩av | 成人av免费 | 色花av| 亚洲免费在线观看 |