• 将数组所有整数排在负数之前


    原题

    设任意n个整数存放于数组A中,编写程序,将所有整数排在所有负数前面。

    思路

    题目超级水,直接上代码了。

    实现代码

    /*************************************************************************
        > File Name: testmain.c
        > Author: KrisChou
        > Mail:zhoujx0219@163.com 
        > Created Time: Mon 18 Aug 2014 12:26:34 AM CST
     ************************************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    
    void print(int *arr, int n);
    void partion(int *arr, int n);
    
    int main(int argc, char *argv[])
    {
        int size = atoi(argv[1]);
        int *arr = (int*)calloc(size,sizeof(int));
        int index;
        srand(time(NULL));
        for(index = 0; index < size; index++)
        {
            if(rand()%2 == 0)
            {
                arr[index] = rand()%100;
            }else
            {
                arr[index] = - rand()%100;
            }
    
        }
        print(arr,size);
        partion(arr,size);
        print(arr,size);
    
        return 0;
    }
    
    void print(int *arr, int n)
    {
        int index;
        for(index = 0; index < n; index++)
        {
            printf("%4d",arr[index]);
        }
        printf("
    ");
    }
    
    /**
     * 如果low++,使得low与high相遇,那么low左边元素已在正确位置,high右边元素(包括high)也在正确位置,finish。
     * 如果high--,使得low与high相遇,那么low左边元素(包括low)已在正确位置,high右边元素也在正确位置,finish。
     */
    void partion(int *arr, int n)
    {
        int low = 0;
        int high = n - 1;
        int tmp;
        while(low < high)
        {
            while(low < high && arr[low] >= 0)
            {
                low++;
            }
            if(low == high)
            {
                break;
            }
            while(low < high && arr[high] < 0)
            {
                high--;
            }
            if(low < high)
            {
                tmp = arr[low];
                arr[low] = arr[high];
                arr[high] = tmp;
            }
        }
    }
  • 相关阅读:
    多个漂亮的按钮样式和图片集合
    纯CSS3实现3D跳动小球
    visual studio 查找/替换对话框
    CSS实现弹出导航菜单
    javascript使浏览器关闭前弹出确认
    使用CSS3制作立体效果的导航菜单
    多个精美的导航样式web2.0源码
    jQuery实现侧边导航栏效果
    jQ函数after、append、appendTo的区别
    ASP.NET使用jQuery AJAX实现MD5加密实例
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/3918626.html
Copyright © 2020-2023  润新知