561| 0
|
小白关于常见的几种算法的一些看法 |
冒泡排序: 冒泡排序是一种简单的排序算法,其原理是通过不断比较相邻的元素,并将不符合排序顺序的元素交换位置,从而使得大(小)的元素逐渐“冒泡”到序列的尾部,直到这个序列按照你需要的顺序排列。 我们以一个数组举例,假设有一个int类型的数组 int arr[] = {64,34,25,12,22}; 数组内的5个元素的排列顺序是杂乱无章的,我们想要这些元素按照从小到大,或者从大到小的顺序排列。我们可以按照冒泡排序进行排序。首先我们需要确认数组内有多少个元素,用于确认需要进行几次比较大小以及交换它俩的顺序。这个数组内共有5个元素,因此我们比较4次即可选择出最大(小)的元素,并将其放至最后。这一步做完之后,前面的四个元素依然是杂乱无章的。因此我们可以对前四个元素进行同样的操作。也就是选择出这四个元素中最大的一个,并将其排至最后。其余的按照同样的步骤操作,即可得到想要的序列。一下为代码展示。 #include <stdio.h> /*打印数组中的元素*/ void exportArray(int arr[],int n){ for(int i = 0;i<n; i++){ printf("%d",arr); printf(","); } printf("\n"); } /*冒泡排序算法*/ void bubleSort (int arr[],int n){ int j=0; int temp=0; int step = 0; int i =0; for (i= 0; i<n-1; i++){ printf("第%d轮\n",i+1); for(j=0; j<n-i-1;j++){ step++; if(arr[j]>arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } printf("Sorted step %d\n",step); exportArray(arr,n); } } } int main (){ int arr[] = {64,34,25,12,22}; int len = sizeof(arr)/sizeof(arr[0]); printf("mian init\n"); exportArray(arr,len); bubleSort(arr,len); } |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed