冒泡排序对数组arr中的元素进行排序 - int main(int argc, const char * argv[]) {
- // insert code here...
- void maopao_z(int arr[], int len);
- void print_arry(int arr[], int len);
- void maopao_d(int arr[], int len);
-
- int arr[10] = {2,3,5,1,9,8,45,32,17,22};
- print_arry(arr, 10); //原始输出
- maopao_z(arr, 10); //排序输出
- maopao_d(arr, 10); //倒序输出
- return 0;
- }
- void print_arry(int arr[], int len){
- printf("数组arr[%d]的原始元素是:\n", len);
- for (int i = 0; i < len; i++) {
- printf("arr[%d] = %d ,", i, arr[i]);
- }
- printf("\n");
- }
- void maopao_z(int arr[], int len){
- //比如6个数,外层跑5趟(6 - 1),内层依次跑5、4、3、2、1次(6-1-i)
- for (int i = 0; i < len - 1; i++) {
- for (int j = 0; j < len - 1 - i; j++) {
- if (arr[j] > arr[j + 1]) {
- //交换两个元素的位置
- arr[j] = arr[j] + arr[j + 1];
- arr[j + 1] = arr[j] - arr[j + 1];
- arr[j] = arr[j] - arr[j + 1];
- }
- }
- }
-
- printf("使用冒泡排序,正序排列:\n");
- //输出:
- for (int i = 0; i < len; i++){
- printf("arr[%d] = %d ,", i, arr[i]);
- }
- }
- void maopao_d(int arr[], int len){
- //比如6个数,外层跑5趟(6 - 1),内层依次跑5、4、3、2、1次(6-1-i)
- for (int i = 0; i < len - 1; i++) {
- for (int j = 0; j < len - 1 - i; j++) {
- if (arr[j] < arr[j + 1]) {
- //交换两个元素的位置
- arr[j] = arr[j] + arr[j + 1];
- arr[j + 1] = arr[j] - arr[j + 1];
- arr[j] = arr[j] - arr[j + 1];
- }
- }
- }
-
- printf("使用冒泡排序,倒序排列:\n");
- //输出:
- for (int i = 0; i < len; i++){
- printf("arr[%d] = %d ,", i, arr[i]);
- }
- }
复制代码 -- 个人拙见,如有不妥、错误之处。望见谅并提出指正
|