c語言從大到小輸出for
Ⅰ c語言排序,從大到小 for(i=0;i<N-1;i++)和for(j=i;j<N;j++)不懂,尤其是為什麼j=i
這是選擇排序。
就是說,先選出最大的一個,放在數組的第一位(array[0]);然後再選次大的,放在第二位(array[1]),依此類推……
循環中的i 表示已經排好序的元素個數,j從i 循環到n,找出最大的一個(其實是整個數組里第i大的,因為前面已經有i個數排好序了),和array[i]交換
然後i++,相當於這個數值已經被放到合適的位置上,以後不考慮它了,接著排後面的。
i前面的元素都已經排好序了,還管它們幹嘛,所以for(j=i;j<n;j++),是讓j從i 循環到n,接著找最大的
至於你說的,當j==i時比較array[i]和array[j]沒什麼用,確實是,但是電腦是不計較這點浪費的,所以如果這樣能讓你寫起來更順手,大家一般是不會在意多浪費幾次的。反正浪費的次數加起來也費不了1ms
如果你不喜歡這樣寫,你也可以寫for(j=i+1;j<n;j++),沒有任何問題。
Ⅱ c語言編寫,計算一矩陣的特徵值,按從大到小排序輸出。
#include<stdio.h>
int main()
{
int a[3][5],i,j,k,temp;
//通過讀取給3×5的數組賦值
for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
//一行一行的判斷
for(k=0;k<3;k++)
{
//標准冒泡法
for (j = 0; j < 9; j++)
{
for (i = 0; i < 9 - j; i++)
{
if (a[k][i] < a[k][i + 1])
{
temp = a[k][i];
a[k][i] = a[k][i + 1];
a[k][i + 1] = temp;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
}
Ⅲ c語言 輸入十個整數,從大到小排序,並輸出來。求解題思路
1、數組形式。
解題思路: 判斷比較的躺數,每趟相鄰的兩個數再進行比較,應用兩次 for 循環
具體代碼:
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - i - 1; j++)//用for循環的元素個數控住多少趟
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
2、指針形式。
創建兩個變數start、end,記住數組起始與結束位置元素的地址,應用兩次 while 循環交換地址
指針冒泡排序 :
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int *arr, int sz)
{
int start = arr;
int end = arr + sz - 1;
//趟數
while (start < end)
{
int *cur = start;
while (cur < end)
{
if (*cur > *(cur+1))
{
int tmp = *cur;
*cur = *(cur + 1);
*(cur + 1) = tmp;
}
cur++;
}
end--;
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
(3)c語言從大到小輸出for擴展閱讀:
演算法原理
冒泡排序演算法的原理如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。