新手小白,不喜勿喷。
在算法中作为基础的冒泡排序和选择排序,两种方法在本质上个人感觉基本相似,我就谈谈自己的看完之后的想法。
我们首先先定义一组数组,元素分别是 3,1,2,8,9这5个,而这5个元素总共进行排序四轮(对5个元素最后一个是不用排的)首先我们的初步思路就是把这几轮排序定义成(i),也就是说i = 1的时候我们要把第一个元素放在最右边(我们定义从大到小最小的在右,最大的在左)因为第零位的元素要和其他元素进行比较,而和每一位数比较在电脑中也要计算,所以和每一位数比较时被叫为次在此我把次也定义一下,每一次 = j在第一轮的第一次为(9 和 8 比较,9比8大9换到8的位置上)
第一轮的第二次(9在和3比较,9在换到3的位置上)直到把9换到最左边也就是下标是4的地方
把9放好后,再找第二大的数也就是8,第二轮第一次(8和3比较,8放在在3的位置)依次类推直到把8放在下标为3的地方,后边的3,2,1也是如此,在这过程中当第一轮(也就是i = 1)时总共比较了4次(也就是j = 4)换算下来就是4+1=5 在第二轮时(也就是i = 2)时总共比较了3次(也就是j = 3)算下来也是2+3=5,第三轮也是3+2=5,第四轮也是4+1=5从中可以看出轮数+比较的次数都会得到5.
viod sort (int arr[], int len);//定义一个无属性的函数,在函数中定义两个形参分别代表(arr是要排序的数,len代表了有几个数)
int i;//轮数
int j;//次数
int tmp;//循环起来是用于存储数组元素
for (i = 0;i < len-1;i++)//首先先让轮数先循环起来(因为i等于0所以len-1)
{
for(j = 0;j < len - 1 - i;j++)//因为j+i才等于len
{
if(arr[j] < arr[j+1])//将元素进行比较
{
tmp = arr[j];//将比较好的元素进行存储
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
int main()
{
int i;
int len;
int arr[5] = {9, 8, 3, 2, 1};
len = sizeof(arr)/sizeof(arr[0];
sort(arr , len);//对函数进行调用
for(i = 0;i < len; i++){
printf("%d", arr[i]);
}
putchar('\n');
system("pausen");
return 0 ;
}