C語言冒泡排序法和選擇排序法的區別


冒泡排序法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void rank(int arr[], int len)
{
int i = 0;
int j = 0;
int temp = 0;
for (i = 0; i < len-1; i++)
{
for (j = 0; j < len-1- i; j++)
{
if (arr[j] < arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main()
{
int array[9] = { 9, 8, 7, 4, 16, 5, 6, 3, 1 };
int len = sizeof(array) / sizeof(array[0]);
int i = 0;
rank(array, len);
for (i = 0; i < len; i++)
{
printf("%d", array[i]);
printf(" ");
}
system("pause");
return 0;
}
選擇排序法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void rank(int arr[], int len)
{
assert(arr);
assert(len);
int i = 0;
int j = 0;
int temp = 0;
for (i = 0; i < len-1; i++)
{
for (j =i+1; j < len; j++)
{
if (arr[i] < arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
int array[9] = { 9, 8, 7, 4, 16, 5, 6, 3, 1 };
int len = sizeof(array) / sizeof(array[0]);
int i = 0;
rank(array, len);
for (i = 0; i < len; i++)
{
printf("%d", array[i]);
printf(" ");
}
system("pause");
return 0;
}

選擇排序法和冒泡排序法的區別:

冒泡排序法:一趟一趟的將兩個相鄰的數進行交換如果有10個數則需要排9躺,如果是從大到小輸出則需要每次將后一個數和前一個數進行比較將較大的數賦值給錢一個數,將較小的數賦值給后一個數,其實就是兩個數交換,那么第一趟交換完畢后,最小的數便出現在了數組的最后面,然后進行第二趟的比較時則要對余下的前9個數進行比較,9趟比較完成后則數組也已經排好序。

選擇排序法:10個數則是需要排9次,若按降序排列,第一次比較:則是將數組的第一個元素與數組中從第二個元素開始到最后的元素進行比較找到最大的數記錄下來然后將值賦值給數組的第一個元素,然后進行第二次比較:則是將數組的第二個元素與數組中從第三個元素開始到最后的元素進行比較,找最大的數記錄下來將值賦值給數組的第二個元素。。。依次循環找完




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: