當前位置:編程學習大全網 - 編程軟體 - 定義十元素的無序int類型數組,並以最優算法將其排序

定義十元素的無序int類型數組,並以最優算法將其排序

可以使用快速排序法,時間復雜度比較低

#include <stdio.h>

#define N 10

void quicksort(int* a, int left, int right);

void main()

{

int a[N] = {5, 4, 7, 2, 8, 3, 1, 9, 1, 6};

int i;

quicksort(a, 0, N - 1);

for (i = 0; i < N; i++)

{

printf("%d ", a[i]);

}

}

void quicksort(int* a, int left, int right)

{

int s, i, j, temp;

if (left < right) //0~N-1

{

s= a[left]; //第壹個作為軸

i = left;

j = right + 1; //最後壹個位置

while (1)

{

while (i < N - 1 && a[++i] < s); //直到找到元素比軸大的元素

while (j - 1 > -1 && a[--j] > s); //直到找到元素比軸小的元素

if (i >= j) //i>=j時跳出循環

{

break;

}

//交換兩個元素,比s大的在s右邊,比s小的在右邊

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

a[left] = a[j]; //最左邊換成j位置的元素,比s小

a[j] = s; //把s放到j的位置

quicksort(a, left, j - 1); //遞歸左邊的

quicksort(a, j + 1, right); //遞歸右邊的

}

}

  • 上一篇:1.為什麽要多余設置工件坐標系?
  • 下一篇:關閉防火墻linux命令關閉防火墻linux
  • copyright 2024編程學習大全網