Optimized Bubble Sort (Java)

前端 未结 10 1205
旧时难觅i
旧时难觅i 2020-12-05 11:29

I would like to know how else I can optimize bubble sort so that it overlooks elements that have already been sorted, even after the first pass.

Eg. [4, 2, 3         


        
10条回答
  •  情歌与酒
    2020-12-05 12:05

    you should use a variable "size" for the inner loop and change it to the latest swapped element in each cycle.This way your inner loop goes up to the latest "swapped" element and passes the rest that are unswapped (aka in their correctplace). i.e

    do {
            int newsize =0;
            for (int i = 1; i < size; i++) {
                if (a[i - 1] > a[i]) {
                    int temp;
                    temp = a[i - 1];
                    a[i - 1] = a[i];
                    a[i] = temp;
                    newsize =i;
                }
            }
            size = newsize;
       } while (size > 0);
    

提交回复
热议问题