#include <stdio.h>
#define Max 5
int main(int argc, const char * argv[]) {
int a[Max] = {22,16,80,1,10};
int time = 0;
int count = 0;
for (int i = 0; i < Max - 1 ; i++) {
for (int j = 0; j < (Max - 1 - i); j++) {
time++;
if (a[j] > a[j+1] ) {
int tmp;
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
count++;
}
}
}
printf("交换次数%d\n",count);
printf("执行次数%d\n",time);
//遍历
for (int i = 0 ; i < Max; i++) {
printf("%d ",a[i]);
}
return 0;
}
Question :
1.我这已经是最优的了吧
2.第二个for循环的j条件,为什么要设置成 Max - i - 1 ,Max表示数组长度.
質問 2 で並べ替えるたびに、最大の数字が必ず最後に配置されるため、2 回目の比較では最後の数字を操作する必要はありません
は
ではありませんobjectiv-c
とは一体何ですかMax - 1- i
到Max - 1
是已经排好序的objectiv-c
質問 1: このアルゴリズムで最適化できるもう 1 つのポイントは、{1, 2, 3, 5, 4} などの既に順序付けされたシーケンスの処理です。処理方法はループから飛び出すことです。ただし、テスト後にソートが完了しなかったため、最適化が完了していません。
質問 2: j 条件の設定: i は以前にソートされており、配列の最後の要素もソートされているため、i の値に依存します。