美文网首页
chimier-c++-day05

chimier-c++-day05

作者: __method__ | 来源:发表于2021-08-12 23:48 被阅读0次

    数组的遍历

    #include <iostream>
    using namespace std;
    
    int main(){
        double arr[] = {1, 2, 3, 4, 5, 6,7, 9};
        cout << sizeof(arr)<< endl;
        cout << sizeof(arr[0])<< endl;// 整个数组占用的空间
        int len =sizeof(arr)/sizeof(arr[0]); // 一个元素占用的空间
        // 数组的遍历 : 将数组元素一个一个取出然后进行某些操作
    //    for (int i = 0; i < len; ++i) {
    //        cout << arr[i] << endl;
    //    }
    //
        for (int i = 0; i < len; ++i) {
            if (arr[i] == 7)
                cout << "7 在数组里面呢"<< endl;
        }
    }
    
    

    求数组的最大值

    #include <iostream>
    using namespace std;
    
    int main(){
        // 五只小猪称重 谁最重
        // 就是求数组中的最大值
    //    int arr[6] = {1300,350,200,400,250, 3200};
        int arr[6];
        cout << "请分别输入6只猪猪的重量"<<endl;
        // 1300 350 22200 400  250 3200
        for (int i = 0; i < 6; ++i)
            cin >> arr[i];
        int maxWeight = arr[0]; // 假设第一只猪最重
        int index = -1;
        int len = sizeof(arr)/sizeof(arr[0]);
        for (int i = 0; i < len; ++i) {
            if (arr[i] >= maxWeight){
                maxWeight = arr[i];
                index = i+1;
            }
        }
        cout << "最重的小猪是第: "<< index <<"只 重量是: "<<maxWeight <<" kg"<<endl;
    }
    

    反转数组

    #include <iostream>
    using namespace std;
    
    int main(){
        // 交换两个变量
        //    int a = 100;
        //    int b = 300;
        //    int temp;
        //    temp = a;
        //    a = b;
        //    b = temp;
        //    cout << a<< endl;
        //    cout << b<< endl;
        int arr[] = {1, 3, 5, 2, 4, 29, 47, 33};
        // 反转数组
        int len = sizeof(arr)/sizeof(arr[0]);
    
        for (int i = 0; i < len/2; ++i) {
            int temp;
            temp = arr[i];
            arr[i] = arr[len-1-i];
            arr[len-1-i] = temp;
        }
    
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
    
    }
    
    

    方法二

    #include <iostream>
    using namespace std;
    
    int main(){
        int arr[] = {1, 3, 5, 2, 4, 29, 47, 33};
        // 反转数组
        int len = sizeof(arr)/sizeof(arr[0]);
        int temp;
    //    for (int min=0, max=len-1;min <= max ;max--, min++ ) {
        for (int left=0, right=len-1;left <= right ;right--, left++ ) {
                // 交换
                temp = arr[left];
                arr[left] = arr[right];
                arr[right] = temp;
        }
    
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
    
    }
    
    

    冒泡排序

    冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字
    的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的
    顶端,所以这个算法才被称为“冒泡排序”。









    在冒泡排序中,第 1 轮需要比较 n -1 次,第 2 轮需要比较 n -2 次……第 n -1 轮需
    要比较 1 次。因此,总的比较次数为 (n -1) +(n -2) +…+1 ≈ n^2
    /2。这个比较次数恒定为该数值,和输入数据的排列顺序无关。
    不过,交换数字的次数和输入数据的排列顺序有关。假设出现某种极端情况,如输
    入数据正好以从小到大的顺序排列,那么便不需要任何交换操作;反过来,输入数据要
    是以从大到小的顺序排列,那么每次比较数字后便都要进行交换。因此,冒泡排序的时
    间复杂度为 O(n^2)。
    一层循环/右侧开始版

    #include <iostream>
    using namespace std;
    
    int main(){
        int arr[] = { 4,2,8,6,5,7,9, 1,3 };
        int len = sizeof(arr)/sizeof(arr[0]);
        for (int j = len-1; j > 0; --j) {
            if (arr[j-1] > arr[j]){
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
        cout << endl;
        cout << "====================================="<< endl;
        for (int j = len-1; j > 1; --j) {
            if (arr[j-1] > arr[j]){
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
        cout << endl;
        cout << "====================================="<< endl;
        for (int j = len-1; j > 2; --j) {
            if (arr[j-1] > arr[j]){
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
        cout << endl;
        cout << "====================================="<< endl;
    
    
    
        for (int j = len-1; j > 3; --j) {
            if (arr[j-1] > arr[j]){
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
        cout << endl;
        cout << "====================================="<< endl;
    
        for (int j = len-1; j > 4; --j) {
            if (arr[j-1] > arr[j]){
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
        cout << endl;
        cout << "====================================="<< endl;
    }
    
    

    两层最右版

    #include <iostream>
    using namespace std;
    
    int main(){
        int arr[] = { 4,2,8,6,5,7,9, 1,3 };
        int len = sizeof(arr)/sizeof(arr[0]);
        for (int i = 0; i < len-1; ++i) {
            for (int j = len-1; j > 0; --j) {
                if (arr[j-1] > arr[j]){
                    int temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
            for (int i = 0; i < len; ++i) {
                cout << arr[i]<< "\t";
            }
            cout << endl;
            cout << "====================================="<< endl;
        }
    }
    
    

    左侧开始版

    #include <iostream>
    using namespace std;
    
    int main(){
        int arr[] = { 4,2,8,0,5,7,9, 1,3 };
        int len = sizeof(arr)/sizeof(arr[0]);
        // len-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]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    
        for (int i = 0; i < len; ++i) {
            cout << arr[i]<< "\t";
        }
    }
    
    

    相关文章

      网友评论

          本文标题:chimier-c++-day05

          本文链接:https://www.haomeiwen.com/subject/cmbrbltx.html