c语言c++大学知识

申请一个长度为20的int型数组,用斐波那契数列初始该数组,删除第一个大于500的元素
并保持数组有序(从被删除的元素开始,整体前移,最后一个重新计算。
数组a[10]=(133.24.12.4.56.1.5.126.99.3)使用冒泡法从小到大排序。
进行算法优化
每一轮少检测一个数字
用标志法,如果没有发生交换,退出排序算法。



```c++
void bubbleSort(int arr[], int len){
    bool isSorted = false;
    for(int i=0; i<len-1; i++){
        int lastSwappedIndex = 0;
        isSorted = true;
        for(int j=0; j<len-1-i; j++){
            if(arr[j] > arr[j+1]){
                swap(arr[j], arr[j+1]);
                isSorted = false;
                lastSwappedIndex = j + 1;
            }
        }
        if(isSorted){
            break;
        }
        i = len - 2 - lastSwappedIndex;
    }
}

```

供参考:

#include <stdio.h>
#define N 20
int main()
{
    int f[N] = { 1,1 }, n = N, i, j, flg;
    for (i = 2; i < n; i++) //用斐波那契数列初始化数组
        f[i] = f[i - 1] + f[i - 2];
    for (i = 0, flg = 1; i < n; i++) {
        if (flg && f[i] > 500)//删除第一个大于500的元素
        {
            for (j = i; j < n - 1; j++)
                f[j] = f[j + 1];
            flg = 0;
            n--;
        }
        printf("%d ", f[i]);
    }
    return 0;
}