冒泡排序,选择排序的理解及代码实…

来源:互联网 发布:svd求逆矩阵 编辑:程序博客网 时间:2024/04/28 11:48

冒泡排序


大数下沉

1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应 该会是最大的数。

3)针对所有的元素重复以上的步骤,除了最后一个。

4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


for(int i=0; i1; i++){

每趟排序都会确定一个数,所以需要再循环len-i,但因为每次都是 //相邻的两个数进行比较,为了a[j+1]不越界,j循环到len-i-1时停止。

   for (int j=0; j

       

       

      if(arr[j]>arr[j+1]){

          

          int temp = arr[j];

          

          arr[j] = arr[j+1];

          

          arr[j+1] = temp;

          

       }

       

   }

   

}


   

选择排序思想

外层 len-1  里层 j=i+1  j

每一趟都是拿着一个元素与后面其他元素进行比较,找出最小值 void selectSort(int array[],intlen)

{

1、确定需排序趟数

for (int i = 0 ; i < len - 1; i++){ // 2、每一趟怎么处理

   for (int j = i + 1; j < len; j++) {

       if (array[i] > array[j]){

          int temp = array[i];

          array[i] = array[j];

          array[j] = temp;

       }

   }

}

}


int arr[] = {..........};




选择排序代码实现:

void select_sort(int*a,int n)
{
    register int i,j,min,t;
    for(i=0;i
    {
        min=i;//查找最小值
        for(j=i+1;j
            if(a[min]>a[j])
                min=j;//交换
        if(min!=i)
        {
            t=a[min];
            a[min]=a[i];
            a[i]=t;
        }
    }
}

冒泡排序代码实现:
#include 
#define SIZE 8
 
void bubble_sort(int a[], int n);
 
void bubble_sort(int a[], int n)
{
    int i, j, temp;
    for (j 0; 1; j++)
        for (i 0; j; i++)
        {
            if(a[i] a[i 1])
            {
                temp a[i];
                a[i] a[i 1];
                a[i 1] temp;
            }
        }
}
 
int main()
{
    int number[SIZE] {95, 45, 15, 78, 84, 51, 24, 12};
    int i;
    bubble_sort(number, SIZE);
    for (i 0; SIZE; i++)
    {
        printf("%d"number[i]);
    }
    printf("\n");





0 0
原创粉丝点击