选择排序法:n个数需要排n-1次,第i次将数组中第i个元素依次与后面元素比较找到最大或最小的一个元素max、min然后将值赋给第i个元素,依次循环直到找到为止。
C语言算法如下:
# include
//选择排序
void SelectSort(int arr[],int number)
{
int i;
int
max;//按从大到小的顺序排
for(i=0;i
{
max=arr[i];
for(int
j=i+1;j
{
if(max
{
max=arr[j];
arr[j]=arr[i];
arr[i]=max;
}
}
printf("%d\n",arr[i]);
}
}
int main()
{
int arr[10]={3,4,2,6,7,88,1,33,34,7};
SelectSort(arr,10);
return 0;
}
程序分析:
第一次:88,3,4,2,6,7,1,33,34,7
第二次:88,34,3,4,2,6,7,1,33,7
第三次:88,34,33,3,4,2,6,7,1,7
第四次:88,34,33,7,3,4,2,6,1,7
第五次:88,34,33,7,7,3,4,2,6,1
第六次:88,34,33,7,7,6,3,4,2,1
第七次:88,34,33,7,7,6,4,3,2,1
第八次:88,34,33,7,7,6,4,3,2,1
第九次:88,34,33,7,7,6,4,3,2,1
冒泡排序法:n个数需要排n-1次。相邻两个元素之间交换,一趟循环下去最小的数出现在最后面,然后对剩下的数再进行重复循环。
C语言算法如下:
# include
//冒泡排序
void SelectSort(int arr[],int number)
{
int i;
int tmp;
for(i=0;i
{
max=arr[i];
for(int
j=0;j
{
if(arr[j]
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j]=tmp;
}
}
printf("%d\n",arr[i]);
}
}
int main()
{
int arr[10]={3,4,2,6,7,88,1,33,34,7};
SelectSort(arr,10);
return 0;
}
程序分析:
第一趟:4,2,6,7,88,1,33,34,7,3
第二趟:2,6,7,88,1,33,34,7,4,3
第三趟:6,7,88,1,33,34,7,4,3,2
第四趟:7,88,1,33,34,7,6,4,3,2
第五趟:88,1,33,34,7,7,6,4,3,2
第六趟:88,1,33,34,7,7,6,4,3,2
第七趟:88,33,34,7,7,6,4,3,2,1
第八趟:88,34,33,7,7,6,4,3,2,1
第九趟:88,33,34,7,7,6,4,3,2,1