前言:把一堆整数负数排在左边非负数排在右边

思想:

从两端同时扫描待排序列,左边的关键字为负数的时候则扫描下一个关键字;直到第一个非负数,同理扫描右端的关键字;

把两端的关键字进行相应的交换的操作,直到左右扫描的索引碰头

代码:

 1 /**
 2  把负数放到左边非负数放到右边
 3 
 4  @param R 待排数组
 5  @param len 数组中关键字的个数
 6  */
 7 void negative0Positive0(int R[],int len);
 8 void negative0Positive0(int R[],int len){
 9     
10     int i = 0;
11     int j = len-1;
12     int temp;
13     
14     for(;i<j;++i,--j){
15         
16         while (i< j && R[i] < 0) {
17             ++i;
18         }
19         
20         temp = R[i];
21         
22         while (i < j && R[j] >= 0) {
23             --j;
24         }
25         
26         R[i] = R[j];
27         R[j] = temp;
28         
29  
30     }
31     
32 }
View Code

相关文章:

  • 2021-08-07
  • 2021-07-31
  • 2021-05-17
  • 2021-11-20
  • 2021-09-16
  • 2021-04-23
  • 2021-09-04
  • 2021-10-19
猜你喜欢
  • 2021-10-08
  • 2021-10-08
  • 2021-09-09
  • 2021-07-05
  • 2022-01-04
  • 2021-09-28
  • 2021-11-30
  • 2021-11-30
相关资源
相似解决方案