冒泡排序
冒泡排序原理为:拿数组array[10]={4,5,3,6,7,2,1,8,9,0}来说,从第一个数开始两两比较:4和5比较,大数置后。然后5和3比较,大数置后。然后5和6比较.......依次比较。大数则置后。每一次都能把大的数放后面。这样就能排好序了。接下来看代码吧
#include<stdio.h>
void printArray(int array[],int length){
for(int i=0;i<length;i++){
printf("%d",array[i]);
}
printf("\n");
}
void bubbleSort(int array[],int length){
for(int j=0;j<length-1;j++){ //外层循环表明排序次数:次数为数组长度-1
for(int k=0;k<length-1-j;k++){ //内层循环表明 两两比较数据把最大数放置末尾
if(array[k]>array[k+1]){
int temp=array[k];
array[k]=array[k+1];
array[k+1]=temp;
}
}
}
}
int main(){
int array[10]={4,5,3,6,7,2,1,8,9,0};
printArray(array,10);
bubbleSort(array,10);
printArray(array,10);
return 0;
}
选择排序:
选择排序原理为:还拿数组array[10]={4,5,3,6,7,2,1,8,9,0}来说,也是两两比较。不过是从第一个数开始,第一个数都要与后面的数比较,把最小数置前。4与后面的9个数都比较。如果有比4小的数则交换位置,如果没有比较完,拿交换后的数和后面数比较,重复上述操作,最后则排好序了,下面看代码吧
#include<stdio.h>
void printArray(int array[],int length){
for(int i=0;i<length;i++){
printf("%d",array[i]);
}
printf("\n");
}
void selectSort(int array[],int length){
for(int j=0;j<length-1;j++){ //外层循环控制次数
for(int k=j+1;k<length;k++){ //内层循环表明 从第一个数开始都要与后面的数比较最后最小数置前
if(array[j]>array[k]){
int temp=array[j];
array[j]=array[k];
array[k]=temp;
}
}
}
}
int main(){
int array[10]={4,5,3,6,7,2,1,8,9,0};
printArray(array,10);
selectSort(array,10);
printArray(array,10);
return 0;
}