申请一个长度为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;
}