c语言-排序算法

    xiaoxiao2025-08-31  69

    冒泡算法

    #include "stdio.h" main() { int l[10]={3,7,5,4,6,1,2,8,9,0}; int i,j,k; int len=sizeof(l)/sizeof(l[1]); printf("len:%d\n",len); for(i=len;i>0;i--) { for(j=0;j<i;j++) { if(l[j]>l[j+1]) { l[j]=l[j]+l[j+1]; l[j+1]=l[j]-l[j+1]; l[j]=l[j]-l[j+1]; } } } for(k=0;k<len;k++) printf("第%d个数:%d\n",k,l[k]); }

    选择排序

    void swap(int *a,int *b) //交换两个整型变量的值 { int tmp=*a; *a=*b; *b=tmp; } int main() { int a[10] = { 4, 1, 8, 5, 22, 56, 77, 32, 123, 2 }; int i, j; for (i = 0; i < 10; i++) { int min = 9999; int min_t; for (j = i; j < 10; j++) { if (a[j] < min) { min = a[j]; min_t = j; } swap(&a[i], &a[min_t]); } } int k; for (k = 0; k < 10; k++) { printf("a[%d]=%d\n", k, a[k]); } }

    二分法

    int search(int *array, int min, int max, int key)//二分法查找 min是数组第一个下标,max是最后一个元素下标。返回匹配元素下表。 { int aim = min; while (array[aim] != key) { if (array[aim] < key) { aim = (min + max) / 2; min = aim; } else { aim = (min + max) / 2; max = aim; } } return aim; }
    转载请注明原文地址: https://ju.6miu.com/read-1302177.html
    最新回复(0)