#include #include#include#include"Sort.h"#include
/*辅助交换函数*/
int Swap(int* str, int pos1, intpos2)
{if (str ==NULL)
{return -1;
}if (pos1 < 0 || pos2 < 0)
{return -2;
}/*交换数组pos1的值和pos2的值*/
int temp =str[pos1];
str[pos1]=str[pos2];
str[pos2]=temp;return 0;
}/*打印数组元素*/
void PrintArraryElement(int* str, intlength)
{
assert(str!=NULL);
printf("\t\t\t");for (int i = 0; i < length; i++)
{
printf("%d\t", str[i]);
}
printf("\n");
}/*选择排序*/
int SelectSort(int* str, intlength)
{/*算法思想
第一次:i=0(j=1,此时比较str[0],str[1]。如果str[1]比str[0]还小的话,进行交换,此时str[0]是前2个最小值了。接着j=2的时候,也就是第3个元素的时候,在进行比较str[0],str[2]。如果str[2]比str[0]小的话,进行交换。此时str[0]就是前3个最小值了。类推。i=0;执行完的时候第一个元素str[0]一定是所有元素中最小的那一个。这样第一个元素就是有序的。
第二次:i=1执行过程和i=0类似,只是每次都是和str[1]进行比较了。str[0]是不参与比较的。所以i=1执行完后,str[1]一定是str[1]到str[length-1] 元素的最小值。这样前2个元素是有序的。
第三次:i=2。这样前3个元素是有序的。
第N次:i=n-1。 这样前N个元素是有序的。也就是所有元素都是有序的啦。
总结:每次都是和固定的位置那个元素进行比较。*/assert(str!=NULL);for (int i = 0; i < length; i++)
{for (int j = i + 1; j < length; j++)
{if (str[i] >str[j])
{
Swap(str, i, j);
}
}
}return 0;
}/*冒泡排序*/
int BubbleSort(int* str, intlength)
<