剑指offer(扩展)快排 P80
1. 快速排序 (递归实现)
void quickSort(int nums
[], int start
, int end
) {
if (nums
== NULL || start
> end
|| start
< 0) return;
int flag
= nums
[start
], i
= start
, j
= end
;
while (i
< j
) {
while (nums
[j
] >= flag
&& i
< j
) --j
;
nums
[i
] = nums
[j
];
while(nums
[i
] <= flag
&& i
< j
) ++i
;
nums
[j
] = nums
[i
];
}
nums
[i
] = flag
;
quickSort(nums
, start
, i
- 1);
quickSort(nums
, i
+ 1, end
);
}
2. 给公司员工年龄排序 P81
void ageSort(int nums
[], int len
) {
if (nums
== NULL || len
< 1) return;
const int range_of_age_up
= 100;
const int range_of_age_down
= 0;
int *hash
= new int[range_of_age_up
+ 1];
memset(hash
, 0, sizeof(hash
) * (range_of_age_up
+ 1) );
for (int i
= 0; i
< len
; ++i
) {
if (nums
[i
] < range_of_age_down
|| nums
[i
] > range_of_age_up
) {
throw "sorry , out of range !";
}
++hash
[nums
[i
]];
}
int index
= 0;
for (int i
= 0; i
<= range_of_age_up
; ++i
)
for (int j
= 0; j
< hash
[i
]; ++j
)
nums
[index
++] = i
;
}
转载请注明原文地址: https://mac.8miu.com/read-490757.html