使用指针实现常见排序算法选择排序,直接插入排序和冒泡排序

时间:2024-05-04 07:02:18

# include<stdio.h>
void selectSort(int *p,int n)    /*选择排序*/    
{int i,j,* pt,temp;
for(i=0;i<n;i++){ pt=p+i;
for(j=i+1;j<n;j++){ if( * (p+j)<*pt)
pt=p+j;    /*记录最小数组元素位置/    
}
temp= * pt, * pt=* (p+i),* (p+i)=temp;}}
/*将范围内最小元素交换到位置i*/


void insertSort(int * p,int n)    /*直接插入排序*/    
{int i,j, temp;
for (i= 1; i <n;i++){ temp = * (p+i);
for (j=i- 1;j>=0&& temp < * (p+j);j--)
/*将大于 temp的元素循环后移*/
*(p+j+1) = *(p+j);*(p+j+1) = temp;}}

void bubbleSort(int *p,int n)    /*冒泡排序/    
(int i,j,temp;
for(i=n-1;i>=0;i--){

for (j=0;j<=i-1;j++)

{ if(*(p+j)> *(p+j+1))/*交换逆序元素*/
{ temp = *(p+j);
*(p+j) = * (p+j+1);

*(p+j+1) = temp;

}

int main()
{int a[10]={70,38,65,97,76,93,11,15,68,64},i=0; printf("排序前:"); for(i=0;i<10;i++)

printf("%d ",a[i]); printf("\n------\n");
selectSort(a,10); /*置换此处的排序函数调用,观察运行结果*/

/* insertSort(a,10);*//* bubbleSort(a,10);*/

printf("排序后:"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0;}