zoukankan      html  css  js  c++  java
  • Work_10

    调整数组使奇数全部都位于偶数前面。
    题目:
    输入一个整数数组,实现一个函数,
    来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
    所有偶数位于数组的后半部分。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //排序
    void Sort(int* arr, int size){
        //设置两个索引
        int start = 0;
        int end = size - 1;
    
        while (start < end){
            //从前往后寻找第一个偶数
            while (arr[start] % 2 != 0){
                start++;
            }
            while (arr[end] % 2 != 1){
                end--;
            }
            if (start < end){
                arr[start] = arr[start] ^ arr[end];
                arr[end] = arr[start] ^ arr[end];
                arr[start] = arr[start] ^ arr[end];
            }
        }
    }
    
    int main(){
        int arr[100];
        int number;
        printf("请输入要排序的数字个数:
    ");
        scanf("%d", &number);
        printf("请输入这些数字:
    ");
        int i;
        for (i = 0; i < number; i++){
            scanf("%d", &arr[i]);
        }
        //排序
        Sort(arr, number);
        printf("排序后的数字为:
    ");
        for (i = 0; i < number; i++){
            printf("%-3d", arr[i]);
        }
    
        printf("
    ");
        system("pause");
        return 0;
    }

    杨氏矩阵
    有一个二维数组.
    数组的每行从左到右是递增的,每列从上到下是递增的.
    在这样的数组中查找一个数字是否存在。
    时间复杂度小于O(N) = O(row + col);
    如:
    数组:
    1 2 3
    2 3 4
    3 4 5

    1 3 4
    2 4 5
    4 5 6

    1 2 3
    4 5 6
    7 8 9

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //建立一个结构体储存数字的位置
    typedef struct Point{
        int row;
        int col;
        int end;
    }Point;
    //查找函数 int Find(int arr[][3], int key, int x, int y, Point* point){ //默认从(0,2)开始查找 //判断是否越界 0 < x < 2; 0 < y <2. if ((x > 2) || (y < 0)){ return 0; } //将key与当前位置数字进行比较 if (key == arr[x][y]){ point->row = x; point->col = y; point->end = 1; return 0; } if (key > arr[x][y]){ Find(arr, key, x + 1, y, point); } if (key < arr[x][y]){ Find(arr, key, x, y - 1, point); } return 0; } int main(){ //建立一个杨氏矩阵 int arr[][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //需要查找的数字 int key; printf("请输入要查找的数字:"); scanf("%d", &key); //设置一个标记,判断是否查找成功 Point pos; pos.end = 0; //开始查找的位置 //此代码默认从(0,2)开始查找 int x, y; printf("请输入开始查找的位置:"); printf("(输入格式为 => x,y) "); scanf("%d,%d", &x, &y); //进行查找 Find(arr, key, x, y, &pos); //判断是否查找成功 if (pos.end){ printf("查找成功! "); printf("该数字的位置为:(%d,%d)", pos.row, pos.col); } else { printf("查找失败!未查找到该数字!"); } printf(" "); system("pause"); return 0; }
  • 相关阅读:
    详解Android Intent
    【JAVA EE企业级开发四步走完全攻略】
    撼动IT界的10大编程语言
    System.getProperty() 常用值
    Android List,Adapter相关
    为程序员量身定制的12个目标
    java 算法数据
    JAVA基础之理解JNI原理
    Java 工厂模式
    linux下C语言读取网卡MAC地址
  • 原文地址:https://www.cnblogs.com/lkimprove/p/10478947.html
Copyright © 2011-2022 走看看