#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 10
void reverse(int p[],int left,int right)//使資料顛倒順序
{
int temp;
while (left < right)
{
temp = p[left];
p[left] = p[right];
p[right] = temp;
right--; left++;
}
}
void sort1(int p[], int left, int right)//將一組正...正負...負的數順序換位
{
int i=0;
reverse(p, left, right);
while (p[i++] < 0) { ; }
reverse(p, left, i - 2);
reverse(p, i-1 , right);
}
void CompletelySort(int* p, int left, int right)//將整個陣列排為負數在前,正數在后且不改變原來順序的陣列
{
int i=0,j=0;
while (left < right&&j<=N)
{
while (p[left++] < 0) { ; }
left = left-1;
j = left;
while (p[j++] > 0) { ; }
sort1(p, left, j - 1);
}
}
main()
{
int a[] = { 1,2,-3,4,-6,-7,9,-10,7,22,-78 };
int right =N;
for (int i = 0; i <=right; i++)
{
printf("%d ", a[i]);
}
CompletelySort(a, 0, right);
puts("\n");
for (int q = 0; q <= right;q++)
{
printf("%d ",a[q]);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237343.html
標籤:C語言
上一篇:找錯
下一篇:二進制演算法
