1. 簡單比較排序
使用for循環描述i,j的變化規律,並推廣到n個元素。
i 外循環變量控制比較次數,i=0,i<n-1
j 內循環變量控制一次內的比較、交換,j=i+1,j<n
例1:簡單比較循環
#include<stdio.h>
main(){
int a[10];
int i,j;
int temp=0;
printf("please input ten number random:/n");
for(i=0;i<10;i++)//輸入10個數
scanf("%d",&a[i]);
printf("the number you have input is:/n");
for(i=0;i<10;i++)//輸出輸入的10個數
printf("%d/t",a[i]);
for(i=0;i<9;i++)//簡單比較排序
for(j=i+1;j<10;j++){
if(a[i]>a[j]){//換序
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
printf("the changed secquence is:/n");
for(i=0;i<10;i++)//輸出輸入的10個數
printf("%d/t",a[i]);
}
使用for循環描述i,j的變化規律,並推廣到n個元素。
i 外循環變量控制比較次數,i=0,i<n-1
j 內循環變量控制兩兩比較元素的下標,j=0,j<n-i-1
例2:冒泡排序
使用for循環描述i,j的變化規律,並推廣到n個元素。
i 外循環變量控制比較次數,i=0,i<n-1
j 內循環變量控制找元素值最小的下標,j=i+1,j<n
例3:選擇排序
#include<stdio.h>
main(){
int a[10];
int i,j,min;
int temp=0;
printf("please input ten number random:/n");
for(i=0;i<10;i++)//輸入10個數
scanf("%d",&a[i]);
printf("the number you have input is:/n");
for(i=0;i<10;i++)//輸出輸入的10個數
printf("%d/t",a[i]);
for(i=0;i<10;i++)//冒泡排序
{
min=i;
for(j=i;j<10;j++){
if(a[j]<a[min])//換序
min=j;
}
if(min!=i){
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
printf("the changed secquence is:/n");
for(i=0;i<10;i++)//輸出輸入的10個數
printf("%d/t",a[i]);
}